我想做一些简单的事情
void returnVal(int a, int &b)
{
b = a;
}
int main()
{
int b = 0;
boost::thread t(returnVal,1,b);
t.join();
}
这将引发错误。无法将int&转换为int。必须有一种简单的方法来获取boost中的返回值,如果没有,那么没有人对原因有一个恰当的解释?
答案 0 :(得分:3)
boost::thread
构造函数使用boost::bind
。 boost :: bind默认通过复制获取参数,所以
b = a;
修改来自main的b
的副本。您需要使用boost::ref()
将对b
的引用传递到thread
中:
boost::thread t(returnVal,1,boost::ref(b));