【发布时间】:2013-08-31 13:03:45
【问题描述】:
我有以下代码:
class A
{
protected:
int a
public:
std::function<void()> lambdaFunc;
A(std::function<void()> lambdaParam) : lambdaFunc(lambdaParam){}
};
int main()
{
someFunctionCall(std::shared_ptr<A>(new A([](){ /*I need this to access int a*/ }));
}
我不确定如何让这个实例中的 lambda 函数访问新对象?
【问题讨论】:
-
你需要访问哪个对象?
-
正在创建 A 的新实例。编辑:很清楚,我希望能够将不同的“处理程序”函数传递给不同的实例。
-
备注:我被推荐使用
make_shared()。所以电话会变成someFunctionCall(std::make_shared<A>([](){ /*...*/ }));(顺便说一下,你原来的电话缺少右括号)。 -
您可以在某个函数调用中使用指向新对象 A 的指针(共享)。如果你想传递另一个
handler,你创建一个新的A实例。否则你需要一个setter在类A中。 -
作为参数传递怎么样:ideone.com/C6eLjY
标签: c++ lambda shared-ptr