functor als templateparameter
-
Hallo
ich möchte einer template-Klasse ein functor als parameter übergeben.
Das klappt nicht, mit der Meldung:error C2228: Links von ".wait" muss sich eine Klasse/Struktur/Union befinden.
er erkennt also das objekt nicht. wenn ich als parameter eine freistehende
funktion nehme, klappt aber alles normal.template <class func> class thread { public: thread(func); ~thread(); private: func f; }; DWORD func() { MessageBoxA(0, 0, 0, 0); return 5; } int main() { struct str { DWORD operator () () { MessageBoxA(0, 0, 0, 0); Sleep(1000); return 5; } }; thread<DWORD (*)()> t1(func); thread<str> t2(str()); t1.wait(); t2.wait(); // <----- error }warum klappt das nicht mit der struct als parameter?
-
Hi,
zwei Sachen sind fehlerhaft.1. Templateargumente dürfen keine lokalen Typen sein
2. thread<str> t2(str()); wird als Funktionsdeklaration angesehen, abhilfe: thread<str> t2 = str();Edit: Deine Fehlermeldung bezieht sich auf Fehler Nr. 2, ersteres juckt ihn vermutlich nicht.
-
Danach wird er meckern, weil er wait() nicht kennt..