template klassen-methode implementierung
-
Hallo Leute,
ich habe eine template klasse, die von einem parameter abhängt.
namespace ns{ template<typename T> class a { void methode_a(); public: template<typename T> void methode_b( blub<T> ) { ... } }; }Jetzt wollte ich die
methode_aaußerhalb der Klasse implementieren, sie ist nicht vom Templargument abhängig. Wie lautet dazu die Signatur?template<typename T> void ns::a::methode_a() { // implementierung }Das klappt irgendwie nicht. Der Fehler ist "unable to match function definition to an existing declaration.
-
Wenn ich das
template<typename T>weglasse, bekomme ich: "Error: argument list for class template 'ns::a' is missing".
-
template<typename T> void ns::a<T>::methode_a(){}
-
LordJaxom schrieb:
template<typename T> void ns::a<T>::methode_a(){}Das würde bedeuten, dass ich es nicht in der .cpp Datei implementieren kann... obwohl ich keinen template Parameter brauche

-
aasdsad schrieb:
Das würde bedeuten, dass ich es nicht in der .cpp Datei implementieren kann... obwohl ich keinen template Parameter brauche

Und woher soll der Compiler sonst wissen, dass dies eine allgemeine Methode für alle T ist und nicht eine Spezialisierung für einen bestimmten Typen?
Es gibt Mittel und Wege, dass du die Implementierung auch in einer cpp-Datei vornehmen kannst. Welcher davon geeignet ist, kommt auf das genaue Modell an. Jedoch muss ich erst fragen, wieso dich das überhaupt stört, denn eigentlich ist das voll in Ordnung so.
-
SeppJ schrieb:
aasdsad schrieb:
Das würde bedeuten, dass ich es nicht in der .cpp Datei implementieren kann... obwohl ich keinen template Parameter brauche

Und woher soll der Compiler sonst wissen, dass dies eine allgemeine Methode für alle T ist und nicht eine Spezialisierung für einen bestimmten Typen?
Es stört nicht wirklich, hatte es bisher so gehalten dass template abhängige sachen immer in include/impl/.hpp implementiert wurden während andere sachen in src/.cpp waren. Bin aber nicht wirklich vertraut mit templates.
SeppJ schrieb:
Es gibt Mittel und Wege, dass du die Implementierung auch in einer cpp-Datei vornehmen kannst. Welcher davon geeignet ist, kommt auf das genaue Modell an. Jedoch muss ich erst fragen, wieso dich das überhaupt stört, denn eigentlich ist das voll in Ordnung so.
Könntest du mir ein paar dieser Quellen oder die dazu passenden Stichwörter/Pattern nennen? Danke!
-
aasdsad schrieb:
Könntest du mir ein paar dieser Quellen oder die dazu passenden Stichwörter/Pattern nennen? Danke!
Vererbung, Pimpl, ähnliches. Nichts geheimnisvolles, bloß die üblichen Sprachmittel.