
Ich versuche jetzt schon ewig einen SDL-Thread aus einer Methode (public) zu erstellen. Doch der Compiler wehrt sich erbittert dagegen...
Ich nenne die Klasse jetzt nur zur Verallgemeinerung "CClass" und die Methode "methode". "t_methode" ist ein SDL_Thread* der die Methode ausführen soll.
Code: Alles auswählen
t_methode = SDL_CreateThread (&CClass::methode, NULL);
Codeblocks gibt Folgendes aus:
Code: Alles auswählen
Fehler: »int (CClass::*)(void*)« kann nicht nach »int (*)(void*)« für Argument »1« nach »SDL_Thread* SDL_CreateThread(int (*)(void*), void*)« umgewandelt werden|
Code: Alles auswählen
int (*) (void *)
Schreibe ich den Klassennamen nicht dazu, bekomme ich diesen Fehler:
Code: Alles auswählen
Fehler: ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen »&CClass::methode« verwenden|
Inzwischen hab ich schon alle Möglichkeiten ausprobiert: mit &, ohne &, mit Klassenname, ohne ihn, mit this, einen Zeiger erstellen und dessen Wert übergeben, usw. Nichts davon funktionierte. Ich hab ein funktionierendes Beispiel jedoch ist der Thread da eine ganz normale Funktion.
Jetzt natürlich die Frage: Was muss bei einer Methode anders sein? Hat das was mit dem implizit übergebenen this zu tun? static wäre unpraktisch, da ich in der Methode einige Membervariablen verwende. Wie mach ichs richtig?