Я пытаюсь привыкнуть к C++. Я хочу добавить объект в динамический массив каждый раз, когда я читаю строку из файла, не зная размерности.Инициализация объекта на лету C++
Я объявил указатель на массив так:
Rlmr *myArray;
где Rlmr является классом с общественной строкой в качестве идентификатора.
Теперь я прочитал файл построчно и после этого я хочу, чтобы добавить объект туАггау
index = 0;
while (fgets(buffer, MAXSIZEBUFFER, fp) != NULL) {
if(buffer[0] == '#') // Skip comment lines
continue;
else {
sscanf(...);
index++;
}
// At this point I want a new object in the array
myArray = (Rlmr*) malloc(sizeof (Rlmr) * index);
// Here I try to call the object constructor by passing the id
myArray[index-1] = new Rlmr(cBeacId);
}
Я не понимаю, то ошибка от компилятора:
error: no match for âoperator=â in â*(myArray+ ((unsigned int)(((unsigned int)index) * 28u))) = (operator new(28u), (<statement>, ((Rlmr*)<anonymous>)))
â
Что не так. И как это можно сделать с помощью std :: vector. Я хотел бы понять оба пути, спасибо.
Некоторые вещи ошибочны. 'Malloc'. 'malloc' - это C, а не C++. Код C++ использует 'new'. Кроме того, вы даже не должны использовать 'malloc' или' new', но вы должны использовать 'std :: vector', и пусть это беспокоится о автоматическом изменении размера вашего массива. Если вы хотите «привыкнуть к C++», лучший способ сделать это - научиться правильно использовать контейнеры на C++. Современный C++-код редко требует динамического выделения любой памяти.И если вы хотите использовать способ использования 'std :: vector', ваша книга на C++ даст гораздо лучшее объяснение, чем краткий ответ на stackoverflow.com –
... особенно если книга взята из [списка хороших книг на C++ ] (http://stackoverflow.com/q/388242/1782465) – Angew