是否可以创建特定类的lambda方法?

时间:2013-08-13 17:43:02

标签: c++11 lambda

例如我有

class A {
public:
    int x, y;
    int(*func)();
};

我想让那个功能像

int main()
{
    A a;
    a.func = [this](){return x + y;};
}

或类似的东西。这意味着我可以在运行时创建方法“func”并确定它是什么。在C ++中可以吗?

1 个答案:

答案 0 :(得分:1)

这是有可能的,但只使用捕获,这意味着你需要使用std :: function<>代替。它不会像你想要的那样有“这种”行为

struct A {
  int x, y;
  std::function<int()> func;
};

然后像这样的代码

int main() {
    A self;
    test.func = [&self](){ return self.x + self.y; };
}

我从来没有在C ++中说过(即使是goto),但我不确定这实际上是一种很好的做事方式。是的,你 CAN 这样做,但你确定没有更好的方法吗?值得深思。