クラスのメンバーにアクセスして、std::thread
でメンバーを変更したいと考えています。ここstd :: threadでクラスメンバーを操作する
は一例であり:
class bar {
public:
int a = 5;
void change_a() {
a = 10;
cout << "thread's a=" << a << endl;
}
};
int main(int argc, char ** argv)
{
bar object1;
std::thread t1(&bar::change_a,bar());
t1.join();
cout << "object's a=" << object1.a << endl;
return 0;
}
結果であった:
スレッドのA = 10
オブジェクトのA = 5
だからスレッド関数変数を変更して印刷しましたが、明らかにオブジェクト1を変更しませんでした。私はそれを印刷したときに、それはまだ同じだった(5)。
私の質問は、ここで変数はどこにありますか?オブジェクトがない場合は10、どうすればそれを使用できますか?
ありがとうございました、作業しているオブジェクトへのポインタを渡してください! 構文のことですが、change_aに引数があるとします。 void change_a(int x); と言うと、私はそれを50にしたいと言っています、私のラインは単にこのように見えますか? std :: thread t1(&bar :: change_a、50、&object1); – acv17
心配しないで、これを解決しました。 – acv17