关闭

boost::thread使用引用参数

763人阅读 评论(0) 收藏 举报
分类:

boost::thread到bind始终是使用copy方式,不管是值类型还是引用类型的指针,都是用copy方式传递,导致结果无法取得。

例如:

void ReceiveMessage(int msgID, void* data, long timeout)
void* retdata = NULL;
boost::thread th2(boost::bind(&ReceiveMessage, 1, retdata, 1));

返回后,retdata指针始终没有内容。

正确做法:

void ReceiveMessage(int msgID, void*& data, long timeout)
void* retdata = NULL;
boost::thread th2(boost::bind(&ReceiveMessage, 1, boost::ref(retdata), 1));

注意点:函数需要用引用参数方式,同时加上boost::ref就能解决这个问题。








0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40005次
    • 积分:679
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:66篇
    • 译文:0篇
    • 评论:0条