我有两个继承自第三个类的类,它们存储在一个列表中. 我正在尝试迭代该列表并调用每个类的实现函数,但是,代码不能编译. 这是我的代码: 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();