У меня есть два класса, которые наследуются от третьего класса и хранятся в списке.Итерирование списка унаследованного класса 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>'
Любые идеи, почему?
try '(* listiter) -> foo()' – Netwave