Template Memberfunktion in normalen Klassen
-
Hi
Ist es in C++ möglich innerhalb einer Klasse eine Template Memberfunktion bzw. operator zud definierem
etwa so
class test { template<class T> void read(T var); } template<class T> void read(T var) { }Beim kompilieren der oberen Zeilen gibt es keinen Fehler allerdings wenn diese Funktion im Programm dann verwendet wird.
etwa sotest t1; int i=0; t1.read(i);Bringt er beim kompilieren(VC6) immer einen Fehler, dass keine geeigente Instanzierung der Template Klasse gefunden werden kann.
thx
Lukas
-
template<class T> void test::read(T &var) { }[edit]
byref zu übergeben wäre glaub ich sinnvoller
-
*nix schrieb:
Ist es in C++ möglich innerhalb einer Klasse eine Template Memberfunktion bzw. operator zud definierem
Ja.
*nix schrieb:
etwa so
class test { template<class T> void read(T var); } template<class T> void read(T var) { }Eher so:
class test { public: template<class T> void read(T var); }; template<class T> void test::read(T var) { }Bringt er beim kompilieren(VC6) immer einen Fehler, dass keine geeigente Instanzierung der Template Klasse gefunden werden kann.
Eine Template-Klasse gibt es hier nicht. Insofern ist das sicher nicht der Fehler den du wirklich bekommst. Ist in deinem Testcode die Methode auch private?
Btw: Beim VC 6 gibt es bei Membertemplates eine Besonderheit zu beachten. Dieser Compiler erlaubt die Definition eines solchen Templates nur innerhalb der Klassendefinition. Nicht aber außerhalb.
Du musst beim VC also:class test { public: template<class T> void read(T var) { ... } };schreiben.