bonjour,
je cherche a réaliser un heritage en c++ suivant le modèle suivant Pièce jointe 359952
j'ai donc créé mes classes comme ceci
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
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:
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); };
tous fonctionne correctement hormis une chose dans mon programme j'ai un liste de RuleCode:
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(); };
crée comme ceci
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 rougeCode:
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(); }
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