Bonjour à tous,
Le titre ne présente pas réellement mon problème qui est un peu plus complexe à mes yeux.
Pour simplifier au maximum, j'ai une classe A, qui à pour fille une classe B (mais qui elle, est abstraite) et elle à également une fille (classe C).
Donc je voudrais instancier ma classe C, mais pour ça j'ai également besoin de la classe A.
Note*: Aucune classe n'a de constructeur par défaut.
J'ai donc pensé à un constructeur de cette forme pour la classe C
Mais ça ne fonctionne pas, j'ai un message d'erreur qui m'indique que je ne peux pas faire appel au constructeur de classe A car il n'est pas directement parent à C :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 C::C(const A& classeA) : A(classeA), { }
error: 'A' is not a direct base of 'C'
Du coup je me suis dit que j'allais faire appel au constructeur de A dans B et que j'allais appeler celui de B dans C.
Mais ça ne pourra pas non plus fonctionner parce que B ne peut pas être instancier (classe abstraite) ...
Cette ligne ne marche donc pas :
Je suis un peu perdu, j'imagine que ce problème est assez fréquent, mais je n'ai pas réussi à trouver de solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part B* classeC = new C(B(A(att1,att2,att3..)));
J'avais trouvé ce site qui en parlait un petit peu, mais je n'ai pas compris la solution non plus (http://www.cplusplus.com/forum/general/48524/)
Si quelqu'un à une idée je suis preneur.
Merci d'avance,
Tranxen
Partager