Как построить форсированный цикл foreach - PullRequest
1 голос
/ 26 мая 2010

У меня есть какой-то абстрактный класс с именем IClass (имеет чисто виртуальную функцию). Есть некоторые классы, которые наследуют IClass : CFirst , CSecond . Я хочу добавить объекты классов, которые наследуются в boost :: ptr_vector :

class IClass { virtual void someFunc() = 0; };
class CFirst : public IClass { };
class CSecond : public IClass { };

boost::ptr_vector<IClass> objectsList;

objectsList.push_back(new CFirst());
objectsList.push_back(new CSecond());

И теперь моя цель - вызвать функцию (которая объявлена ​​в IClass ) из всех объектов в objectsList . Я бы предпочел использовать BOOST_FOREACH :

foreach(IClass tempObj, objectsList)
{
    tempObj.someFunc();
}

Проблема в том, что IClass - абстрактный класс, поэтому я не могу сделать его экземпляр для цикла foreach. Что мне делать?

1 Ответ

1 голос
/ 26 мая 2010

Используйте ссылку на IClass вместо:

foreach(IClass& tempObj, objectsList)
{
    tempObj.someFunc();
}
...