例如我有
class A {
public:
int x, y;
int(*func)();
};
我想让那个功能像
int main()
{
A a;
a.func = [this](){return x + y;};
}
或类似的东西。这意味着我可以在运行时创建方法“func”并确定它是什么。在C ++中可以吗?
答案 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 这样做,但你确定没有更好的方法吗?值得深思。