bonjour,

je cherche a réaliser un heritage en c++ suivant le modèle suivant Nom : Capture.PNG
Affichages : 391
Taille : 70,3 Ko

j'ai donc créé mes classes comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
class Rule {
 
public:
 
	/*DESTRUCTOR*/
	virtual ~Rule();
 
	/*METHODES*/
	virtual ERuleStatement evaluate(list<float> listValues, float mean, float SD) = 0;
 
	/*SETTER*/
	virtual void setIsActive(bool isActive);
	virtual void setName(ERulesName name);
 
 
	/*GETTER*/
	virtual bool getIsActive();
	virtual ERulesName getName();
 
 
 
protected:
	/*ATTRIBUTS*/
	bool isActive;
	ERulesName name;
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Parameterizable_Rules : public Rule{
 
protected:
	/*ATTRIBUTS*/
	int value;
 
public:
	/*DESTRUCTOR*/
	virtual ~Parameterizable_Rules();
 
	/*METHODES*/
	virtual ERuleStatement evaluate(list<float> listValues, float mean, float SD) = 0;
 
	/*GETTER*/
	int getValue();
 
	/*SETTER*/
	void setValue(int value);
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Rule_X_1s : public Parameterizable_Rules {
 
private:
	/*ATTRIBUTS*/
	static Rule_X_1s *instance;
 
protected:
	/*CONSTRUCTOR*/
	Rule_X_1s();
 
public:
	/*DESTRUCTOR*/
	virtual ~Rule_X_1s();
 
	/*METHODES*/
	virtual ERuleStatement evaluate(list<float> listValues, float mean, float SD);
 
	/*GETTER*/
	static Rule_X_1s *getInstance();
};
tous fonctionne correctement hormis une chose dans mon programme j'ai un liste de Rule
crée comme ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
void EvaluateController::createRules(){
    Rule* rulesList[8];
    rulesList[0] = Rule_1_2s::getInstance();
    rulesList[1] = Rule_1_3s::getInstance();
    rulesList[2] = Rule_2_2s::getInstance();
    rulesList[3] = Rule_2of3_2s::getInstance();
    rulesList[4] = Rule_R_4s::getInstance();
    rulesList[5] = Rule_X_1s::getInstance();
    rulesList[6] = Rule_Xx::getInstance();
    rulesList[7] = Rule_XT::getInstance();
}
seul les 3 dernières rules ont une valeur j'aimerais donc faire un listerules[5].getValue() mais mon IDE refuse et me souligne le tout en rouge
je pense qu'il faudrait que je le cast ou alors que mes méthodes get et setValue soit en virtual mais si je fais ca je dois les redefinir dans toute les autre classes, j'aimerais pouvoir la redéfinir uniquement dans la classe qui m’intéresse une idée ? merci