Klasse aus einem void Pointer?
lima-city → Forum → Programmiersprachen → C/C++ und D
beschreibung
code
fehler
fehlermeldung
folgender fehler
funktion
globale funktion
klasse
klasse verwenden
krieg
nehmen
pointer
problem
versuchen
verwenden
-
Ich möchte die Funktion pthread_create() in einer Klasse verwenden. Da die Funktion aber keine Klassen Funktionen nimmt (sagt auch Google) wollt ich eine globale funktion nehmen und die klasse mit this als void * pointer übergeben. Aber irgendwie krieg ich es dann nicht hin den pointer als eine klasse zu verwenden oder in eine klasse umzuwandeln. Wie muss ich das machen?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo krisi12345,
Falls der static_cast<>() nicht funktioniert, kannst Du es ja mal mit einem reinterpret_cast<>() versuchen.
#include <iostream> using namespace std; class MyClass { private: int value; public: MyClass():value(0) {} void setValue(int i) { this->value = i; } int getValue() { return this->value; } }; void test_cast(void * v) { MyClass * c; c = static_cast<MyClass*>(v); c->setValue(4); } int main() { MyClass c; test_cast((void*)&c); cout << c.getValue() << endl; return 0; }
[Edit: Funktionierenden Quelltext einfügen]
Beitrag zuletzt geändert: 10.12.2010 16:00:24 von darkpandemic -
Also wie immer wäre die Fehlermeldung des Compilers und der Code gut um das Problem zu sehen.
Ansonsten kommt mir deine Beschreibung vor, wie folgender Fehler:
void *ptr; klasse *p; p = ptr; //hier kommt der Fehler
Wenn dein Code so aussieht, dann brauchst du nur einen Cast:
p = (klasse *) ptr;
Dabei ist wichtig, dass der Cast auch ein Pointer ist.
Wenn du den * weglässt kommt eine etwas kryptische Fehlermeldung soweit ich mich erinnere.
Beitrag zuletzt geändert: 14.12.2010 19:17:25 von sektor -
darkpandemic Lösung hat es schon gemacht!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage