Извините за мой английский.Изменить элемент списка
Некоторые класс:
class Kid {
public:
...
string _name;
std::list<string> _cuteKids;
};
Использование класса:
std::list<Kid> kids;
kids.push_back(new Kid("Jeck"));
kids.push_back(new Kid("Anna"));
kids.push_back(new Kid("Toma"));
for(auto e: kids) {
e._cuteKids.push_back("Jeck"); // Many some names...
[1]
}
[2]
Если вы посмотрите на код в отладчике, список в пункте 1 _cuteKids - есть предмет. Но если посмотреть на список в параграфе 2 _cuteKids - нет предмета. Зачем?
Это всего лишь пример, на самом деле я очень усложнил алгоритм, но нижняя строка заключается в том, что после цикла _cuteKids становится пустым. Как будто это статическая переменная (e: дети), а не указатель на переменную дети.
Почему «Малыш» содержит список «милых детей»? Ребенок - это ребенок. Один ребенок не содержит других детей. Это не имеет смысла. У вас также есть проблема с уровнями косвенности. Учитывая 'std :: list kids;', 'kids.push_back (new kid (" xxx ");' не может компилировать - 'new' дает указатель, но вы пытаетесь вставить этот указатель в качестве объекта для который он ссылается. –
Странно, что у вас есть 'std :: list kids;', а затем вы добавляете новый 'kid' using ** 'new' **:' kids.push_back (новый Kid («Jeck»)) ; '... –
_cuteKids - это список детей, которые любят ребенка. Работа, он не меняет. –