Я работаю над проектом, который заставляет меня хранить массив объектов, конструктор которых
Item(char* item, int itemType){
char temp[200];
for(int i = 0; i < 200; i++){
temp[i] = '\0';
if(item[i] != '\0'){
temp[i] = item[i];
}
}
_item = item;
_itemType = itemType;
_tweetIDs = NULL;
}
Не беспокойтесь о _tweetID, это еще одна функциональная часть моей программы, не связанная с моей проблемой.
Этот массив хранится в классе:
ItemList()
Как это работает, так это то, что функциональная часть моей программы анализирует строку ввода и помещает ее в объект Item (char *, int). Вот как это добавляет строку:
int addItem(char* item, int type){
char temp1[200];
for(int i = 0; i < 200; i++){
temp1[i] = '\0';
}
int j = 0;
while(item[j] != '\0'){
temp1[j] = item[j];
j++;
}
_items[_size] = Item(temp1, type);
_size++;
return _size;
}
Где _items - это массив Item (), а _size - это поле, которое увеличивается каждый раз при добавлении Item ().
Моя проблема возникает, когда мне нужно распечатать содержимое списка.
У меня есть метод, который делает это:
void printList(){
for(int i = 0; i < 500; i++){
if(_items[i] != NULL){
cout << "[" << i << "] ";
_items[i]->printContents();
}
}
}
Я протестировал printContents () в конструкторе Item () и протестировал printList в методе addItem, и они оба работают при вызове внутри самого класса. Проблема возникает, когда мне нужно вызвать метод print вне тела класса.
В основном методе я создаю объект List:
List itemList;
Конструктор по умолчанию устанавливает для всех членов массива Item () значение NULL и инициализирует _size.
После добавления нескольких объектов Item () в массив (который, как я подтвердил, увеличивается с помощью отладчика), я попытался распечатать его. Когда я звоню:
itemList.printList();
Это дает мне правильное количество индексов (и строк), но массив char это просто куча мусора. Я использовал отладчик, чтобы попытаться выяснить, где это пошло не так. В методе addItem () я вызвал printList для проверки массива, и вывод из него в порядке. Затем я вызвал itemList.printList () сразу после последнего вызова addItem (), и он дал мне мусор. Между addItem () и itemList.printList () массив char потерян или что-то в этом роде.
Есть идеи, что не так? Я дам тебе больше кода, если он тебе понадобится.