迭代继承的类c ++列表

Ida*_*nis 3 c++ inheritance iterator stdlist

我有两个继承自第三个类的类,它们存储在一个列表中.

我正在尝试迭代该列表并调用每个类的实现函数,但是,代码不能编译.

这是我的代码:

class A
{   
   public:

   virtual void foo ()=0;
};

class B :public class A
{
   public:

   void foo();
}

class C :public class A
{
   public:

   void foo();
}

std::list<A*> listOfClasses;

listOfClasses.push_back (new B());
listOfClasses.push_back (new C());

for(std::list<A*>::iterator listIter = listOfClasses.begin(); listIter != listOfClasses.end(); listIter++)
{
    listIter->foo()
}
Run Code Online (Sandbox Code Playgroud)

此代码无法编译,我收到以下错误消息(for the line listIter->foo()):

'foo' : is not a member of 'std::_List_iterator<_Mylist>'

有什么想法吗?

Dan*_*ont 5

你必须这样使用迭代器: (*listIter)->foo()