3

例如我有

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

我想让那个函数像

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

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

4

1 回答 1

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),但我不太确定这实际上是否是做事的好方法。是的,您可以这样做,但您确定没有更好的方法吗?深思熟虑。

于 2013-08-13T17:52:44.730 回答