2015-01-16 2 views
0

У меня есть std::vector<uint8_t[1115]>, и я хочу сохранить в нем char*. Я не понимаю, как мне нужно нарисовать символ *, чтобы поместить его в вектор. Может быть, его глупо, но я попытался это:Как добавить char */convert to std :: vector <uint8_t[]>

char* myCharArray = new char[1115]; 
std::vector<uint8_t[1115]> myVector; 
myVector.push_back(reinterpret_cast<uint8_t*>(myCharArray)); 

Я не понимаю, почему это не работает. Ошибка заключается в следующем:

error: no matching function for call to ‘std::vector<unsigned char [1115]>::push_back(uint8_t*)’ 
+0

'вектор' того, что T? – edmz

+0

Также уточните, что означает «не работает». Разве это не компилируется, не разбивается, не вызывается странным результатом или не крадет ваших друзей в Facebook? – molbdnilo

+0

Ошибка: нет подходящей функции для вызова 'std :: vector :: push_back (uint8_t *)' – telina

ответ

2

У вас есть две проблемы:

  1. vector элементов А «s должны быть скопировать конструктивны и назначаемые, а массив не является. Это означает, что вы не можете юридически иметь vector массивов. Если вы используете C++ 11 или более позднюю версию, вы можете использовать std::vector<std::array<uint8_t, 1115>>. Тип std::array является скопированной оболочкой вокруг массива.

  2. push_back принимает объект, который может вставить в вектор, просто копируя объект. Вы не можете скопировать char* (или любую другую точку) в массив. Однако, если вы выполните мою рекомендацию в (1), вы можете полностью избежать указателя и просто сделать это std::array<uint8_t, 1115> myCharArray;.

Если std::array не доступен для вас, вы можете использовать std::vector<std::vector<uint8_t>> и просто убедитесь, что внутренние векторы правильного размера.

Возможно, вам будет интересно посмотреть на why you probably won't need raw pointers or new на большинстве ваших C++.

+0

Хорошо, я не могу использовать C++ 11, поэтому, наверное, мне нужно найти другой способ? Благодарим за помощь. – telina

+0

@telina. 'Std :: vector >' должен отлично работать для вас. –

Смежные вопросы