Struct mit Pointer auf Objekte auslesen und neuem Objekt zuweisen ?
-
Hallo,
Ich hätte da ne Frage zu einem Pointer Problem. Ich werd noch verrückt, weil ich den Fehler nicht finden kann.
ich habe ne typedef:
typedef struct threadObject{ ClassB* cB; HANDLE* event };In meiner ersten Klasse erstelle ich einen Thread und will als Parameter
ein ein Struct übergebenClassB cB; HANDLE event; threadObject tO = {&cB, &event}; HANDLE secondThread; secondThread = (HANDLE) CreateThread(NULL,0, cB.threadFunction, void*) &tO, 0, NULL);Hier in Klasse B will ich die Zeiger auf die Objekte dann wieder
einem neuen Objekt zuweisen, aber hier gehts dann einfach nicht weiter.
Ich hab mir einige Tutorials und Forenposts angesehen, aber kann meinen Fehler
nicht finden
DWORD WINAPI ClassB::threadFunction(LPVOID data) { threadObject* to = (threadObject*) data; ClassB* peer = (ClassB*) to->cB; HANDLE* event = (HANDLE*) to->event;
-
Du kannst lediglich statische Funktionen übergeben. (also mach die Funktion statisch, oder benutz eine freie Funktion).
-
threadFunction ist statisch
-
sry für doppelpost, zu früh auf senden gekommen (meld mich dann wohl doch mal an
)das ganze läuft, wenn ich die zeilen
ClassB* peer = (ClassB*) to->cB; HANDLE* event = (HANDLE*) to->event;auskommentiere,.. aber ich seh nach wie vor ned was falsch is dran
-
Du übergibst einen Zeiger auf ein Objekt mit auto storage class. Sicher, dass das Objekt selbst noch existiert?
-
sogar der debugger schmiert mir ab.. genau in der zeile:
ClassB* peer = (ClassB*) to->cB;to hat den selben wert wie die übergebene LPVOID data..
aber peer hat dann 0X000000 und ich kann nich mal mehr nen schritt zurückgehn im debugger.Wie kann ich sicher gehen, dass die Objekte noch existieren?
-
ClassB* peer = to->cB; HANDLE* event = to->event;so gehörts natürlich

-
SeverinK schrieb:
Wie kann ich sicher gehen, dass die Objekte noch existieren?
Das Objekt auf den Heap packen. (Und wenn nichtmehr gebraucht, natürlich wieder freigeben).