c++ - 迭代继承类 C++ 的列表

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

此代码无法编译,我收到以下错误消息 (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/

相关文章:

c++ - 何时将整个 C++ 类框架放入 DLL 中?

java - 我应该如何正确地迭代优先级队列?

c++ - 使用 SWIG 实现 C++ 和 Ruby 之间的多态性

python - 可迭代字符串

c++ - 条件中的迭代器赋值 - vector 迭代器不兼容

c++ - 内部和外部重载 C++ 运算符之间的区别

c++ - Visual Studio C++ 无法将文字字符串参数识别为常量字符串引用

c++ - 将 Vector 转换为 QJsonArray 的最快方法?

c# - 接口(interface)会在子类中自动实现吗?

C++ 强制转换为派生类