我一直在疯狂地试图解决这个问题。考虑以下代码(我假设已定义前向引用):
// Signature representing a pointer to a method call
typedef
void (MyClass::*MyMethod)(int);
class MyClass
{
MyClass();
void method1(int i);
void method2(int i);
void associateMethod(int index, MyMethod m);
}
鉴于上述情况,构造函数可以执行以下操作:
MyClass::MyClass()
{
associateMethod(1, &MyClass::method1);
associateMethod(2, &MyClass::method2);
}
但是,我希望能够调用“associateMethod”,其中第二个参数是匿名方法。但是,以下内容无法编译。
associateMethod(3, [this](int) -> void { /* some code here */ }
我收到一条错误消息,称它们无法从 lambda 到 MyMethod 进行可行的转换。
我想知道 lambda 语法是否需要在某处包含“MyClass”,但对 lambda 表达式进行随机猜测,例如
MyClass::[this](int) -> void {}
or
[this]&MyClass::(int) -> void {}
不要编译。
希望有任何指点(没有双关语)
Thanks