当前位置 : 主页 > 手机开发 > 其它 >

迭代继承类c的列表

来源:互联网 收集:自由互联 发布时间:2021-06-19
我有两个继承自第三个类的类,它们存储在一个列表中. 我正在尝试迭代该列表并调用每个类的实现函数,但是,代码不能编译. 这是我的代码: class A{ public: virtual void foo ()=0;};class B :publi
我有两个继承自第三个类的类,它们存储在一个列表中.

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

这是我的代码:

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()
}

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

‘foo’:不是’std :: _ List_iterator< _Mylist>‘的成员

有什么想法吗?

您的容器包含指针,因此您需要取消引用它们:

(*listIter)->foo();
网友评论