ici le dilemme d'aujourd'hui:C++ scanner de conteneurs est basé sur un modèle
suppose que j'ai
class A{
public:
virtual void doit() = 0;
}
alors différentes sous-classes A, tout mettre en œuvre leur bonne méthode Doït. Supposons maintenant que je veux écrire une fonction qui prend deux itérateurs (l'un au début d'une séquence, l'autre à la fin). La séquence est une séquence de sous-classes A comme dis list<A*>
ou vectoriel ... La fonction devrait appeler toutes les méthodes doit en scrutant les itérateurs ... Comment faire? J'ai pensé à:
template<typename Iterator> void doList(Iterator &begin, Iterator &end) {
for (; begin != end; begin++) {
A *elem = (serializable*) *begin;
elem.doIt();
}
}
mais donne des erreurs bizarres ... avez-vous de meilleures idées ou des informations spécifiques? Est-il possible d'utiliser list<A>
au lieu de list<A*>
?
Pouvez-vous s'il vous plaît donner quelques exemples des erreurs étranges que vous obtenez? –
Nit: Êtes-vous sûr de vouloir passer les itérateurs par référence? – dirkgently
Oui, bien sûr, vous pouvez utiliser 'list ' mais nous aurions besoin de voir l'appel réel pour suggérer mieux. – dirkgently