Ich habe die folgende Klasse, die einen neuen std::thread startet. Jetzt möchte ich, dass der Thread auf eine Member-Variable der Klasse zugreift. Bisher weiß ich nicht, wie ich das machen soll. In meiner MyThread-Funktion möchte ich m_Continue überprüfen.
Ich habe versucht, 'this' beim Erstellen des Threads zu übergeben, aber ich erhalte einen Fehler:
Fehler 1 error C2197: 'void (__cdecl *)(void)' : zu viele Argumente für den Aufruf c:\program files (x86)\microsoft visual studio 11.0\vc\include\functional 1152 1 MyProject.
class SingletonClass
{
public:
SingletonClass();
virtual ~SingletonClass(){};
static SingletonClass& Instance();
void DoSomething();
private:
static void MyThread();
std::thread* m_Thread;
bool m_Continue;
};
SingletonClass::SingletonClass()
{
m_Continue = true;
m_Thread= new std::thread(MyThread, this);
}
void SingletonClass::MyThread()
{
while(this->m_Continue )
{
// etwas machen
}
}
void SingletonClass::DoSomething()
{
m_Continue = false;
}
SingletonClass& SingletonClass::Instance()
{
static SingletonClass _instance;
return _instance;
}
int _tmain(int argc, _TCHAR* argv[])
{
SingletonClass& singleton = SingletonClass::Instance();
singleton.DoSomething();
return 0;
}
Wie kann ich das machen??