ok que nous avons les classes suivantesC++ hériter des fonctions virtuelles
class A
{
public:
virtual void taco()
{
cout << "Class A" << endl;
}
};
class B: public A
{
public:
virtual void taco()
{
cout << "Class B" << endl;
}
};
class C : public A
{
public:
void taco()
{
cout << "Class C" << endl;
}
};
Et si je fais ce
A a = A();
B b = B();
C c = C();
a.taco(); //Class A
b.taco(); //Class B
c.taco(); //Class C
deque<A> aa = deque<A>();
aa.push_back(a);
aa.push_back(b);
aa.push_back(c);
for(int i=0;i<aa.size();i++)
aa[i].taco();//All Class A
A r = B();
r.taco(); //Class A
vous maintenant remarquerez quand j'initialiser A comme B ou C, il a gagné » t tirer les fonctions de B ou C. Je me demandais s'il y avait un moyen de contourner cela? Je comprends le concept que puisque l'objet est A il utilise la fonction taco de A, mais je me demandais juste s'il y avait un truc pour obtenir les autres fonctions. Mon projet est assez compliqué, et je ne peux pas connaître toutes les classes qui remplaceront A (à cause des plugins qui surchargent une classe). En outre, j'ai un peu besoin que la fonction virtuelle de base ait un corps pour ajouter un comportement par défaut. Merci.
Utilisez des pointeurs et créez les objets dynamiquement. Le polymorphisme en C++ nécessite l'utilisation de pointeurs ou de références. Cela devrait être couvert dans n'importe quel manuel C++ - lequel utilisez-vous? –
Pourquoi ne pas mettre cela comme réponse. – ColWhi
Neil peut l'avoir écrit comme un commentaire, mais le traiter comme une réponse ;-) – Pike65