c++ - 将 lambda 传递给成员变量的构造函数
问题描述
考虑以下类,
template <class L>
class A {
public:
A(L l) : _l(l) {}
private:
L _l;
};
class B {
public:
B(int x) : _x(x), _a([this]() { return _x; }) {}
private:
int _x;
A<???> _a;
};
我不确定如何在???
. std:: function<int()>
有效,但据我所知,这意味着虚函数调用(当然,这不一定是坏事,但如何正确地做到这一点会很有趣)。
解决方案
您可以使用大致等效的函数对象,而不是 lambda。
template <class L>
class A {
public:
A(L l) : _l(l) {}
private:
L _l;
};
class B {
struct GetX
{
int operator()() const { return _b->_x; }
B * _b;
};
public:
B(int x) : _x(x), _a(GetX{ this }) {}
private:
int _x;
A<GetX> _a;
};
推荐阅读
- java - Solr 更新问题
- ruby-on-rails - 安装 json (1.8.1) 时出错,Bundler 无法继续
- angularjs - 显示 div 取决于使用 ng-show、ng-click、ng-init 的点击次数
- javascript - 简单的 Rails 应用程序 - 未捕获的 ReferenceError:$ 未定义
- android - web3j 和 web3js 中的签名不同?
- java - CalendarView 在片段中不起作用?安卓
- c# - 无法在 Azure DevOps 2019 通过代码(无权限)创建代理池
- flutter - 未定义命名参数“colors”。flutter
- java - 无法评估具有 [@xsi:type='ED'] 类型的 Xpath xpression
- amazon-web-services - DynamoDB GSI 分区包含大型集