Bonjour à tous,
Je maîtrise un peu mal les héritages virtuels. J'ai une classe de base :
Puis deux classes héritant de cette classe de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class CMaBase { public: void Add(const std::string& rstrCode); private: std::vector<std::string> m_vecCodes; }
Et enfin une classe finale
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 class CMaSubClass1 : virtual public CMaBase { public : CMaSubClass1() { Add("Code 1 de CMaSubClass1"); Add("Code 2 de CMaSubClass1"); } } class CMaSubClass2 : virtual public CMaBase { public : CMaSubClass1() { Add("Code 1 de CMaSubClass2"); Add("Code 2 de CMaSubClass2"); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class CMaClassFinale : public CMaSubClass1, CMaSubClass2 { // J'aimerai que m_vecCodes ici contiennt les codes 1 et 2 des subclass 1 et 2, soit 4 codes }
En fait ça fonctionne mais à un moment dans mon code j'airai besoin de downcaster un CMaBase* en une de ses classe fille, et j'obtient une erreur :
error C2635: impossible de convertir un(e) 'CMaBase*' en un(e) 'CMaSubClass1*'; conversion à partir d'une classe de base virtuelle implicite
L'objectif étant qu'il y ai un membre au niveau de la classe de base que les différentes classes héritées remplissent, et faire une classe les réunissant via l'héritage multiple pour avoir une liste complète.
Est-ce possible de faire ça ?
Merci beaucoup,
A bientôt
Partager