Objekt aus Klassen-Template heraus liefern lassen
-
Guten Abend zusammen,
folgender Code erzeugt einen Compilerfehler, den ich leider nicht verstehe:template<class T> class A { class B { }; public: B getB(); int getInt(); }; template <class T> B A<T>::getB() { } template <class T> int A<T>::getInt() { }Mein Problem ist, warum der Compiler bei der Funktion getB() nun meckert, getInt funktioniert ja schließlich auch. Wie komme ich also an das B-Objekt ran. Die Struktur soll so erhalten bleiben, sprich, ich möchte die Implementierung nicht in die Klassendeklaration mit reinnehmen.
-
vielleicht
template <class T> A<T>::B A<T>::getB()
-
Danke für Deine Mühe aber das ist es leider nicht.
Die Meldung, die mir der gcc dabei ausspuckt lautet:
*expected constructor, destructor, or type conversion before »A«
*
-
template <class T> typename A<T>::B A<T>::getB()
-
Besten Dank, das funktioniert.
Zur Begründung:
Heißt das, ich muss das Schlüsselwort typename genau deswegen verwenden, um den Typen, den das Template irgendwann mal haben soll, genau anzusprechen?
-
Wenn du auf ein Element einer Template-Klasse zugreifst nimmt der Compiler immer ein Objekt an, wenn es sich dabei aber um nen Typ handelt, dann musst du ihm das explizit mit typename sagen.