У меня есть базовый класс животных и производных классов под названием Cat and Dog. display() и readfile() являются виртуальными функциями в обоих классах.Контейнер указателя базового класса C++, редактировать атрибуты конкретного объекта
В настоящее время отображается только «Kay», как только вызывается readfile(). Как я могу прочитать все строки в файле таким образом, чтобы я мог найти элемент в векторе, а затем отредактировать его, например, если я хочу изменить «Sugar» на «Sopa», запустив функцию с именем changeName () например?
Cat.csv
Kay
Sugar
Jo
int main()
{
AnimalCollection coll;
std::ifstream file("Cat.csv");
Cat *cat = new Cat("CAT");
Dog *dog = new Dog("DOG");
coll.push_back(cat);
coll.push_back(dog);
for (Animal *c : coll)
{
c->display();
}
for (Animal *c : coll)
{
c->readfile(file);
}
return 0;
}
Пожалуйста, предоставьте [mcve]. – Barry
Загрузите содержимое файла в соответствующий контейнер (т. Е. 'Std :: map') и извлеките информацию из контейнера, когда это необходимо. –
То, что вы описываете, не соответствует коду, который вы опубликовали, однако то, что является согласованным между двумя, заключается в том, что вы просите одного животного прочитать файл и ожидать нескольких результатов. –