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

C++11 是否可以创建特定类的lambda方法?,c++11,lambda,C++11,Lambda,比如我有 class A { public: int x, y; int(*func)(); }; 我想把func变成 int main() { A a; a.func = [this](){return x + y;}; } 或者类似的。这意味着我可以在运行时创建方法“func”,并决定它是什么。在C++中,是否有可能?它是可能的,但是只使用捕获,这意味着你需要使用STD::For函数。我想它不会有你想要的那种好的“这种”行为 struct A { in

比如我有

class A {
public:
    int x, y;
    int(*func)();
};
我想把func变成

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

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

它是可能的,但是只使用捕获,这意味着你需要使用STD::For函数。我想它不会有你想要的那种好的“这种”行为

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

我从不说C++(即使是GOTO),但我不确定这是否是一个很好的方法。是的,你可以这样做,但是你确定没有更好的方法吗?思考的食物。

或者让lambda接收类型为
a
的参数,尽管这不是特别优雅。Jake,那么唯一的方法是将其作为参数传递还是使其可见?这太令人伤心了,我认为在JS中也可以这样做。这需要你像test.func(test)一样调用它,这让我想起了我在C lol中尝试模仿OOP的太多。如果我有一个数组,它会工作得很好吗:
A[10];对于(inti=0;i<10;i++)a[i].func=[a[i]](){a[i].x=5;}
@Artem:我确信“this”不在成员函数定义之外的范围内,在其他地方使用它将是一个错误。我还确信,如果要避免“test.func(test)”,必须捕获变量或使用std::bind部分应用它。不管怎样,你都不会得到“这个”
int main() {
    A self;
    test.func = [&self](){ return self.x + self.y; };
}