Prob mit Templates
-
Moin,
ich habe mir folgendes zurechtgeschrieben:template<class T> struct nbh_field { T data; T *t, *tl, *tr, *l, *r, *b, *bl, *br; }; template<class T> class neighbourhood { public: neighbourhood(void); ~neighbourhood(void); protected: nbh_field<T> nbh; };Will ich nun compilen, kriege ich:
e:\VS\neighbourhood\neighbourhood.h(8): error C2079: 'nbh_field<T>::data' verwendet undefiniertes class 'T' with [ T=T ]kann mir jmd sagen, was ich falsch mache?
MfG
brot
-
Also weder VC++7.1 noch g++ meckern an dem Code rum. k.a. was dein Problem ist.
MfG
-
funktioniert unter visual c++ 2003
-
tipp schrieb:
funktioniert unter visual c++ 2003
Sag ich doch VC++ 7.1 == VC++ 2003

MfG
-

ich hab vs.net 2001, da tuts nicht
-
hab die antwort nicht gesehen als ich den beitrag abgeschickt hab.
MFG
-
-
ups, 2k2 war gemeint, vertipper meinerseits.
edit: kanns wirklich am compiler liegen?
-
zeig einen komplett kompilierbares beispiel und gut is...
-
ich meine mit main und instanziierung...
-
jo, würde mir helfen

-

-
template<class T> struct nbh_field { T data; T *t, *tl, *tr, *l, *r, *b, *bl, *br; }; template<class T> class neighbourhood { public: neighbourhood(void); ~neighbourhood(void); protected: nbh_field<T> nbh; }; template<class T> neighbourhood<T>::neighbourhood() {} template<class T> neighbourhood<T>::~neighbourhood() {} int main() { neighbourhood<int> t; }
-
thx, funktioniert bestens. nur noch etwas habe ich:
ich kann die memberfunktionen nicht in einer cpp definieren, dh//neighbourhood.cpp #include "neighbourhood.h" template<class T> neighbourhood<T>::neighbourhood(void) { } template <class T> neighbourhood<T>::~neighbourhood(void) { } //main.cpp #include "neighbourhood.h" int main(int argc, char *argv[]) { neighbourhood<char> n; n.test('c'); }gibt mir
neighbourhood error LNK2019: Nicht aufgeloestes externes Symbol "public: __thiscall neighbourhood<char>::~neighbourhood<char>(void)" (??1?$neighbourhood@D@@QAE@XZ), verwiesen in Funktion _main neighbourhood error LNK2019: Nicht aufgeloestes externes Symbol "public: __thiscall neighbourhood<char>::neighbourhood<char>(void)" (??0?$neighbourhood@D@@QAE@XZ), verwiesen in Funktion _main
wenn ich den exakt gleichen code(soll heissen die ganze klasse) in einer datei habe, erkennt er alles bestens.
-
wurde hier schon 20000 mal besprochen. kurze antwort: es geht nicht.
-
ok, thx.
BTW: welches forum ist mit diesen 20k beiträgen gefüllt?