Bonjour à tous et à toutes.
J'aimerais savoir si il est possible de créer un objet d'une classe template sans savoir le type a l'avance? Je m'explique :
J'ai une classe mere A contenant des méthodes abstraite:
J'ai créé plusieurs classes fille dérivant de cette classe, histoire de pouvoir réécrire doSomething suivant les classes filles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 template <class RESULT_TYPE> class A { public: A(){} virtual RESULT_TYPE getValue(void) = 0; virtual void setValue(RESULT_TYPE v) = 0; virtual bool doSomething(void) = 0; private: RESULT_TYPE RESULT; }
Maintenant que mes classes mères et filles sont la, je peux donc écrire par exemple :
Mon but maintenant est de pouvoir écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 B<int, int, int> b; C<int, int, int> c; A<int> *a1= &b; A<int> *a2 = &c; a1->doSomething(); a2->doSomething();
donc ne plus à avoir a spécifier le type en déclarant un objet de classe A (histoire de pouvoir plus tard creer des fonctions prenant en paramètre un A* et non un A<type>* .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 B<int, int, int> b; C<int, int, int> c; A *a1= &b; A *a2 = &c; a1->doSomething(); a2->doSomething();
Je voulais savoir si c'était possible, et si oui, comment faire? Mes recherches ont été veines
Je vous souhaite une bonne journée !
Partager