Bekomme Methode nicht außerhalb der Klasse definiert
-
Mahlzeit!
Hier das Problem:
template<class T> class ClassFoo { template<typename U> T Foo(const U &Struktur); { // Code }; };
Wie kann man die Methode außerhalb der Klasse definieren
-
template<class T> template<typename U> T ClassFoo<T>::Foo(const U& Struktur) { // Code }
denk ich
-
Hatte ich schon probiert, gibt aber Fehlermeldungen
**
error C2059: Syntaxfehler : ''template<''
error C2065: 'T' : nichtdeklarierter Bezeichner
error C2143: Syntaxfehler : Fehlendes ';' vor '{'
error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?
error C2954: Vorlagendefinitionen koennen nicht verschachtelt werden
**
-
Achso, sag doch, dass du Microsoft Visual C++ benutzt. Der kann Membertemplates, soweit ich weiß, nur innerhalb der Klasse.
Korrektur: Ich meine natürlich MSVC 6.
-
oh gott ist das arm
Danke für deine Hilfe!
-
Halt moment, sicher?
Die anderen templates kann er ja außerhalb definieren, nur dieses verschachtelte Gebilde nicht. Kann er also keine verschachtelten Templates außerhalb verarbeiten?
-
Hi!
Also VS2003 kann die Funktionen außerhalb definieren, aber nur innerhalb der Header bzw. innerhalb der Einheit wo die Klasse auch definiert wurde. VS2003 erkennt zwar das Schlüsselwort export, was benutzt werden kann um Klassendefinition und Memberdefinition zu trennen (Header und C++-Datei).
Es geht also nur so:
template<class T> class ClassFoo { template<typename U> T Foo(const U &Struktur); }; template<class T> template<typename U> T ClassFoo<T>::Foo(const U& Struktur) { // Code }
Siehe sonst diesen Thread:
http://www.c-plusplus.net/forum/viewtopic.php?t=64900&highlight=templateCode-Hacker
-
Sag ich doch. Diese "verschachtelten Gebilde" heißen Membertemplates, weil sie Templates sind, die Member einer Klasse oder eines Klassentemplates sind.
-
Ok ich denke damit ist jetzt alles klar, danke!