【发布时间】:2014-02-11 16:15:32
【问题描述】:
我有两个类继承自第三个类,它们存储在一个列表中。
我正在尝试迭代该列表并调用每个类的已实现函数,但是代码无法编译。
这是我的代码:
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()
}
此代码无法编译,我收到以下错误消息 (for the line listIter->foo()):
'foo' : is not a member of 'std::_List_iterator<_Mylist>'
任何想法为什么?
【问题讨论】:
-
试试
(*listiter)->foo()
标签: c++ inheritance iterator stdlist