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;
};
就有点懵逼了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.