Salut!

J'ai essayé d'implémenter une liste doublement chainée comme classe template.
Mais je ne suis pas arriver à définir les méthodes de la classe à l'extérieur de celle-ci et ai du les "rapatrier" à l'intérieur.
Voici une illustration minimale du problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
template<typename T>                         
class A{                    
      T n;
      A(T a):n(a){};
      T* createPointer();
      };
 
T* A::createPointer(){
                   return &n;
                   }
Le compilo, g++ avec DevC++, me renvoie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
27 C:\DOCUME~1\PROPRI~1\Bureau\main_test.cpp expected constructor, destructor, or type conversion before '*' token 
27 C:\DOCUME~1\PROPRI~1\Bureau\main_test.cpp expected `,' or `;' before '*' token
venant du fait qu'il ne comprend pas ce T qui en dehors de la classe n'a pas de signification.

Sinon tout est bon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
template<typename T>                         
class A{                    
private:
        T n;
public: 
        A(T a):n(a){};
        T* createPointer(){
                   return &n;
                   }      
      };
marche sans problème.

Comment créer proprement les méthodes d'une classe template en dehors de celle-ci?

Merci de votre aide.