Je dois programmer un puissance 4 en C++, avec un mode joueur contre ordinateur et un mode deux joueurs.
J'ai donc une classe joueur dont héritent deux sous-classes: humain et cpu.
Je veux pointer alternativement sur chacune des sous-classes avec le même pointeur, pour changer de joueur. J'ai donc pensé à utiliser un pointeur de type joueur*.
Mais j'ai un petit problème, chacune de mes sous-classes possède une méthode appelée tourdejeu, qui porte le même nom, mais n'est pas la même dans les deux sous-classes (c'est pour ça que je ne la met pas dans joueur).
Et donc, quand j'utilise un pointeur joueur*,pour appeler la fonction tourdejeu d'une de mes sous-classes,
exemple
humain joueurhumain1(name); //création d'une instance de la classe humain (qui hérite de la classe joueur)
joueur* joueur_courant; //création d'un pointeur sur le type class joueur
joueur_courant=&joueurhumain1; //affectation de l'adresse de joueurhumain1au pointeur
joueur_courant->tourdejeu(); // appel de la fonction tourdejeu() de l'instance joueurhumain1
Le compilateur me dit: «class joueur» has no member named «tourdejeu».
Tu dois définir une fonction virtual void tourdejeu() dans ta classe joueur.
Elle peut par exemple afficher erreur : appel direct à joueur::tourdejeu
car normalement, la fonction de joueur ne doit pas être appelée elle-même