2017-10-01 2 views
1

Kann jemand bitte inneren Klassengebrauch mit Vorlagen klären? Ich habe Bücher und Internet-Beispiele durchsucht, um Vorlagen zu lernen, aber nur wenige Beispiele zeigen die innere Klassennutzung. Was ich bisher gesammelt istC++ Vorlagen und innere Klassen

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

    A(); 
    ~A(); 

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

Von this Lesen und this Ich glaube, ich äußere Klassenkonstruktors als

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

} 

aber wie ich die innere Klassenkonstruktors Definition definieren bin definieren sollte? Wie definiere ich die Definition eines? Ich habe den größten Teil des Tages damit zu kämpfen gehabt, um das herauszufinden und Hilfe wirklich zu schätzen.

+0

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

+0

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

Antwort

2

Sie sollten nicht class in der Definition des Konstruktors von A verwenden, sollte es

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

Und für den Konstruktor von B,

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

Und für die Member-Funktion a sein, Verwenden Sie typename wenn bezieht sich auf A<T>::B

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

LIVE