C++ : type sous classe dans classe mère

renan -  
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 :

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

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
0