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:

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;
}
J'ai créé plusieurs classes fille dérivant de cette classe, histoire de pouvoir réécrire doSomething suivant les classes filles.

Maintenant que mes classes mères et filles sont la, je peux donc écrire par exemple :

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();
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 *a1= &b;
    A *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>* .

Je voulais savoir si c'était possible, et si oui, comment faire? Mes recherches ont été veines

Je vous souhaite une bonne journée !