Createthread in Klasse



  • Hi....
    ich hab ein kleines Problem.
    Seit ich mein Programm in eine Klasse gepackt hab bekomm ich immer folgenden Fehler: error C2276: '&' : Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion.

    Ich weiss auch wo der Fehler liegt *g*. Nur ich weiss net wie ichs richtig machen muss.
    Die Such-Funktion hab ich schon gequält aber leider finde ich nur Beispiele mit _beginthread. Warum _beginthread besser ist weiss ich schon, ich will aber hier mit Absicht CreateThread haben. Wenn mir einer zeigen könnte wie das richtig ausschauen muss wär ich sehr dankbar.

    MIt der Funktion hier will ich die Threads erstellen.

    int Infofunktion::startinfo()
    {
     THREADINFO info;
    
     ... 
    
     for(int i = 0; i < info.threads; i++)
      {
       CreateThread(NULL, 0, &infothread, (LPVOID)&info, 0, &id);
       Sleep(50);
       }
     ....
    }
    

    Mein Thread hab ich so aufgebaut.

    DWORD WINAPI Infofunktion::infothread(LPVOID param)
    	{
    	 THREADINFO info = *((THREADINFO *)param);
    	 THREADINFO *infop = (THREADINFO *)param;
    
              ...
             }
    

    Und die Headerdatei schaut so aus.

    class Infofunktion
    	{
    	public:
               int startinfo();
    
    	private:
    	 DWORD WINAPI infothread(LPVOID param);
    
    	 typedef struct THREADINFO
    		{
    		 string channel;
    		 int threads;
    
    		} threadinfo;
    
    	};
    

    Vielen DANK für die Hilfe !



  • [cpp]
    static DWORD WINAPI infothread(LPVOID param);
    [/cpp]



  • nichtstatische Memberfunktionen können normalerweise nicht als Threadfunktion angegeben werden, da ihre Signatur eine andere ist, und eine Objektreferenz mit übergeben werden muß.

    gibt aber eine generische Lösung, z.B.

    http://www.codeproject.com/threads/memberthreads.asp



  • Vielen DANK für die schnellen Antworten !


Anmelden zum Antworten