Problème d'héritage avec une classe abstraite
Bonjour à tous,
J'ai un petit soucis au niveau de l'héritage entre deux classes.
J'ai ma class mère qui est une class abstraite composée de :
Code:
1 2 3 4 5 6 7 8 9 10
|
#ifndef EXPRESSION_H_
#define EXPRESSION_H_
class Expression {
//Il n'y a encore aucune fonction dedans mais il pourrait sy' trouver
//des méthodes pures
};
#endif /*EXPRESSION_H_*/ |
et une fonction qui implémente cette class :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#ifndef BINARY_H_
#define BINARY_H_
#include "Expression.h"
#include "../AnalyseurLexical/Token.h"
class Binary : private Expression {
public:
Binary();
void setExpression1(Expression* expr) {expression1 = expr;}
void setExpression2(Expression* expr) {expression2 = expr;}
void setOperator(Token* operat) {op = operat;}
virtual ~Binary();
private :
Token* op; //operator
Expression* expression1;
Expression* expression2;
};
#endif /*BINARY_H_*/ |
Voila rien de bien compliqué et pourtant je ne suis pas si sûr de ça. Est-ce que ça vous semble correct?
Ensuite dans un autre fichier je fais une convertion entre les deux classes, je m'explique :
Code:
1 2 3 4 5 6 7 8 9
|
Expression* e = conjunction();
b = new Binary();
b->setOperator(lexical.nextToken());
b->setExpression1(e);
b->setExpression2(conjunction());
e = (Expression*) b;
//e = dynamic_cast<Expression*>(b) ne fonctionne même pas à la compilation |
Sauriez vous me dire comment faire? Parce que avec l'astuce que je fais, le destructeur de Binary n'est jamais appelé et je me retrouve avec plein de fuite de mémoire.
Merci de votre aide,
Philippe