Je rencontre un problème avec l'appel d'une méthode avec l-valeur d'une classe abstraite. La définition de la classe est:en utilisant l-valeur avec la classe abstraite
class SimulatorSequenceItemBase {
public:
SimulatorSequenceItemBase();
virtual ~SimulatorSequenceItemBase();
virtual uint32_t GetResult(uint32_t p_nSite) = 0;
virtual bool MoveNext(SimulatorSequenceItemBase& p_rNext) = 0;
}
SimulatorSequenceItemBase a plusieurs sous-classes. Il y a des séquences (pour les boucles) et des éléments pour la boucle for.
Je veux faire une boucle dans la séquence et compter les étapes, en utilisant:
uint32_t nI = 0;
SimulatorSequenceItemBase root = forSeq; // forSeq is an instance of a subclass of SimulatorSequenceItemBase
while(root.MoveNext(root))
{
++nI;
std::cout << root.GetResult(0);
}
La racine Initally références à la racine, et chaque appel à MoveNext, la référence doit être ajustée à l'élément suivant.
Le code mentionné ci-dessus ne fonctionne pas, car la racine ne peut pas être allouée, car le type de racine est abstrait. Mais si je devais créer un pointeur, la valeur ne peut pas être modifiée dans MoveNext.
Comment puis-je résoudre ce problème? C'est bien de changer n'importe quel code, mais l'idée devrait rester la même.
Je me demande qui 'nI' est –
@Armen: C'est le pseudo secret de Nicolai Josuttis. ':)' – sbi