我将尝试使用来自类“Test”的“shared_ptr”启动线程,但我遇到了这个错误:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include/g++-v4/functional:559:2:注意:从'std :: shared_ptr '到 'std :: shared_ptr &'的参数1没有已知的转换
示例代码:
注意:在使用VS2013的Windows系统中,第一个例子可以正常运行。
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include/g++-v4/functional:559:2:注意:从'std :: shared_ptr '到 'std :: shared_ptr &'的参数1没有已知的转换
示例代码:
std::shared_ptr<Test> test = std::make_shared<Test>();
std::thread th(&Test::run, test); // Compiler error
Test* test2 = new Test;
std::thread th(&Test::run, test2); // okay
注意:在使用VS2013的Windows系统中,第一个例子可以正常运行。
std::thread th(std::bind(&Test::run, test))
是否更好(可能不会,因为它们可能使用一些共同的内部代码)? - Dave S