C++ : type sous classe dans classe mère
renan
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je programme une calculatrice en C++ et suis confronté à un problème d'héritage:
Une classe mère "expression" représente une expression mathématique, par exemple "6+4"
La classe "constante" hérite de cette classe expression, car une constante est une expression particulière. Exemple de constante : "4"
Je voudrais ajouter une méthode "eval()" à la classe expression qui calcule la valeur de l'expression et la renvoie, sous forme de constante.
Le problème est que le compilateur de visual studio me dit qu'il y une erreur de type :
Il me dit que le type "Cst*" n'est pas compatible avec le type "<error type>*" de la fonction Expression::eval()
Je programme une calculatrice en C++ et suis confronté à un problème d'héritage:
Une classe mère "expression" représente une expression mathématique, par exemple "6+4"
La classe "constante" hérite de cette classe expression, car une constante est une expression particulière. Exemple de constante : "4"
Je voudrais ajouter une méthode "eval()" à la classe expression qui calcule la valeur de l'expression et la renvoie, sous forme de constante.
Le problème est que le compilateur de visual studio me dit qu'il y une erreur de type :
class Expression { public : virtual Cst* eval() = 0; // Renvoie la valeur de l'expression dans un nouvel objet cst }; class Cst : public Expression{ public: virtual Cst* eval() = 0; };
Il me dit que le type "Cst*" n'est pas compatible avec le type "<error type>*" de la fonction Expression::eval()
1 réponse
il faut déclarer ta classe Cst avant Expression :
class Cst; class Expression { public : virtual Cst* eval() = 0; // Renvoie la valeur de l'expression dans un nouvel objet cst }; class Cst : public Expression{ public: virtual Cst* eval() = 0; };mais je trouve ça étrange de recopier la déclaration d'un membre abstrait dans la classe fille.