2010-05-26 9 views
1

J'ai une classe abstraite appelée IClass (a une fonction virtuelle pure). Il existe certaines classes qui héritent IClass: CFirst, CSecond. Je veux ajouter des objets de classes qui héritent en boost :: ptr_vector:Comment construire boost pour chaque cycle

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()); 

Et maintenant, mon objectif est d'appeler la fonction (qui est declarated dans IClass) de tous les objets objectsList. Je préfère utiliser BOOST_FOREACH:

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

Le problème est que IClass - classe abstraite, donc je ne peux pas faire par exemple de celui-ci pour le cycle de foreach. Que devrais-je faire?

Répondre

1

Utilisez une référence à la place IClass:

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