2017-10-01 6 views
1

Est-ce que quelqu'un peut clarifier l'utilisation des classes internes avec des modèles? J'ai cherché dans des livres et des exemples d'Internet pour apprendre des modèles mais peu d'exemples montrent l'usage de classe interne. Ce que je recueillies à ce jour estModèles C++ et classes internes

template <class T> 
class A 
{ 
    class B 
    { 
     B() 
     ~B() 
    } 

    A(); 
    ~A(); 

    B* a(T i, B* l); 
} 

De la lecture this et this je crois que je dois de définir le constructeur de la classe externe comme

template <class T> 
class A<T>::A() 
{ 

} 

mais comment suis-je en train de définir la définition du constructeur de la classe intérieure? Comment définir la définition d'un? J'ai lutté avec cela pendant la majeure partie de la journée en essayant de comprendre cela et j'apprécie vraiment l'aide.

+0

template ' A :: B :: B() {...} template' ' –

+0

typename A :: B * A :: un (T i, B * l) {...} ' –

Répondre

2

Vous ne devriez pas utiliser class dans la définition du constructeur de A, il devrait être

template <class T> 
A<T>::A() 
{ 
} 

Et pour le constructeur de B,

template <class T> 
A<T>::B::B() 
{ 
} 

Et pour la fonction membre a, utiliser typename en référence à A<T>::B

template <class T> 
typename A<T>::B* A<T>::a(T i, typename A<T>::B* l) 
{ 
    return ...; 
} 

LIVE