我有兩個繼承自第三個類的類,它們存儲在一個列表中。迭代繼承類C++的列表
我想迭代該列表並調用每個類的實現函數,但是,代碼不編譯。
這裏是我的代碼:
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()' – Netwave