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

Fermé
renan - 13 juin 2012 à 14:04
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 13 juin 2012 à 16:27
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 juin 2012 à 16:27
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