class Testc
{
public:
void fun1(int *&p)
{
p = new int();
*p =2;
}
void fun2()
{
std::thread t([=] {(fun1)( p);});
if(t.joinable())
t.detach();
}
int *p;
};
fun1 的参数是引用传递,为什么 fun2 用[=]捕获也编译通过,特殊在于参数是类的成员。
如果把 fun1 移到全局函数,为什么 fun2 用[this]捕获也编译通过
void fun1(int *&p)
{
p = new int();
*p =2;
}
class Testc
{
public:
void fun2()
{
std::thread t([this] {(fun1)( p);});
if(t.joinable())
t.detach();
}
int *p;
};
就有点懵逼了