我有两个继承自第三个类的类,它们存储在一个列表中。
我正在尝试迭代该列表并调用每个类的已实现函数,但是,代码无法编译。
这是我的代码:
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++ - 迭代继承类 C++ 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707153/