gpt4 book ai didi

c++ - 将 lambda 传递给成员变量的构造函数

转载 作者:行者123 更新时间:2023-11-28 01:23:25 24 4
gpt4 key购买 nike

考虑以下类,

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;
};

关于c++ - 将 lambda 传递给成员变量的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com