Bonjour,
Nouveau problème dû au polymorphisme (c'est compliqué ce truc). Voici donc le problème :
Y'a t'il une astuce pour appeler une méthode fille via la fonction mere sans que celle ci ne sache les méthodes spécifiques aux classes filles.
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 Class mere{ virtual void fonction1(int arg) = 0; void fonction2(double arg); } Class fille : public mere { void fonction1(int arg); int toto(); } main{ unique_ptr<mere> merePtr (fille()); //Code (faux ?) à titre d'exemple pour montrer que je travaille avec un pointeur. merePtr.get()->fonction1(10); //Ca fonctionnne merePtr.get()->fonction2(3.14); //Ca fonctionnne merePtr.get()->toto(); //Ca ne fonctionne pas }
Pour info certaines méthodes des classes filles seront communes, d'autres spécifiques à chaque fille.
La méthode brutale que j'ai trouvé sur le net serait de déclarer chaque méthode spécifique de chaque classe fille dans la classe mere, ce qui n'est pas mon but. Je voudrais pouvoir ajouter de nouvelles classes fille (qui auront aussi des méthodes spécifiques) sans avoir à retravailler la classe mere.
Est-ce possible ?
Question subsidière : Quelle est la différence entre *merePtr et merePtr.get() ?
Partager