Mit einem Thread auf die Membervariable einer Klasse zugreifen (gelöst)



  • Hallo,

    ich möchte mit einem Thread auf eine Membervariable einer Klasse zugreifen.
    Dazu habe ich folgenden Code geschrieben:

    myClass.h

    class myClass
    {
    public:
    
    	myClass() {eineVariable = 10;}
    	void eineMethode();
    	int eineVariable;
    };
    

    myClass.cpp

    #include "Klasse.h"
    
    DWORD WINAPI ThreadFunc( void* lpParam )
    { 
    	cout << (*(myClass*)lpParam).eineVariable << endl;
        return 0; 
    }
    
    void myClass::eineMethode()	
    {
    	DWORD dwThreadId, dwThrdParam = (DWORD)this; 
    	HANDLE hThread; 
    	hThread = CreateThread( NULL, 0, ThreadFunc, &dwThrdParam,0, &dwThreadId);               
    }
    

    Aufruf in der main Methode:

    myClass *s = new myClass();
    s->eineMethode();
    Sleep(1000);
    

    Das Programm wird ohne Fehler oder Warnmeldung übersetzt.
    Als Ausgabe erhalte ich jedoch nicht die 10 sondern anscheinend irgenwelche anderen Zahlen (anscheinend aus fremden Speicher).

    Wie kann ich auf die Variable der Klasse zugreifen?



  • Übergib direkt dwThrdParam (und nicht dessen Adresse).

    So kommt nur ein ungültiger Zeiger auf this an, den du dann auch noch falsch interpretierst.



  • Danke für den Hinweis, mit

    hThread = CreateThread( NULL, 0, ThreadFunc, this,0, &dwThreadId);
    

    wird wie gewünscht die 10 ausgegeben


Anmelden zum Antworten