Ich habe eine harte Zeit rufen Sie die richtige Syntax für den Aufruf einer Elementfunktion der Klasse in separaten Thread zu bekommen. Keine der drei Optionen funktioniert. Zeile 1 und 2 verursachen einen Kompilierzeitfehler, während der dritte einen Laufzeitfehler anzeigt. Kann mir bitte jemand sagen was der richtige Weg ist.Nicht in der Lage Klasse Member-Funktion in einem separaten Thread unter Verwendung von C++ 11 Thread-Klasse
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
struct Complex
{
mutex mx;
int i;
Complex(int q) : i(q) {}
void mul(int x)
{
lock_guard<mutex> lock(mx);
int z = i*x;
cout<<z<<endl;
}
void div(int x)
{
lock_guard<mutex> lock(mx);
int z = i/x;
cout<<z<<endl;
}
void both(int x, int y)
{
mul(x);
div(y);
}
};
int main()
{
//Complex complex(9);
//thread t(&Complex::both,&Complex(9),32, 23); --1
//thread t(&Complex::both,complex,32,23); --2
//thread t(&Complex::both,&complex,32,23); --3
return 0;
}
Nun, das ist perfekt. Vielen Dank für Ihre Antwort ! – user3798283
Die 'std :: ref'-Version hängt von einem [kürzlich behobenen LWG-Problem] (http://cplusplus.github.io/LWG/lwg-defects.html#2219) ab und funktioniert in einigen Implementierungen möglicherweise nicht. –
@ T.C. Ich werde es einfach entfernen. Ich wusste nicht, dass das "Ref" Zeug so kompliziert war ... Danke! – Barry