class Test{
public:
int work(){
cout << "in work " << endl;
return 0;
}
void work(int x){
//cout << "x = " << x << endl;
cout << "in work..." << endl;
}
};
int main(){
Test test;
std::function<void()> f = std::bind(&Test::work, &test);
thread th(f);
th.join();
return 0;
}
Jak wyżej kod, chcę związać funkcji członka void work(void)
z klasą (nazwijmy go Test) , ale pojawia się komunikat o błędzie kompilatora, który nie może określić, której funkcji należy użyć.Jak powiązać jedną z funkcji członka o tej samej nazwie w klasie, z C++ 11 std :: wiążą
Nie mogę zmienić testu klasy, ponieważ należy ona do biblioteki, jak osiągnąć mój cel? Z góry dziękuję!
Preferuj "auto f = [& test] {test.work(); }; 'do dowolnego wyrażenia wiązania –
lambda jest rzeczywiście wygodniejsza niż std :: bind do realizacji mojego celu, po zobaczeniu tych odpowiedzi – debugman
Należy również zauważyć, że używając' std :: function' zamiast 'auto' płacisz cenę typu- wymazać –