C ++基类指针容器,编辑特定对象

时间:2016-06-14 21:19:16

标签: c++ class pointers containers base

我有一个基类动物和派生类叫做猫和狗。 display()和readfile()都是这两个类中的虚函数。

目前,只有" 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;
}

1 个答案:

答案 0 :(得分:0)

这个问题缺少重要部分。

就像@KennyOstrom指出的那样,文件似乎只读了一次。 file.seekg(0, file.beg);可以提供帮助。

这解决了你的问题吗?

for (Animal *c : coll)
{
   c->readfile(file);
   file.seekg(0, file.beg);
}

在这种情况下,更好的解决方案是读取文件一次并将内容提供给不同的类。

相关问题