首页 > 编程语言 > 详细

线程回调函数形参不能用引用

时间:2020-11-03 09:43:29      阅读:23      评论:0      收藏:0      [点我收藏+]

创建线程后,添加的回调函数中,如果加入了引用符号,编译时会报如下错误:

错误 C2893 未能使函数模板“unknown-type std::invoke(_Callable &&,_Types &&...)”


#include <thread>
#include <iostream>
#include <memory>

class sharedClassTest {
public:
	void init(int v, int& z) {
		printf("hello mint: %d\n", v);
		z = 2 * v;
	}

	void test()
	{
		int val = 0;
		std::thread thr = std::thread(&sharedClassTest::init, this, 3, val);
		for (int i = 0; i < 100; i++)
		{
			printf("test mint %d\n", i);
		}
		thr.join();
		printf("val = %d\n", val);
	}

};

int main()
{
	std::shared_ptr<sharedClassTest> ptr(new sharedClassTest);
	ptr->test();
	system("pause");
	return 0;
}

需要将引用改为指针即可void init(int v, int* z)

线程回调函数形参不能用引用

原文:https://www.cnblogs.com/crazyMint/p/13917603.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!