我在存储 lambda 表达式时遇到问题,将类中的“this”指针作为参数捕获。我像这样制作了typedef:
typedef void(*func)();
下面的代码工作正常。
#include <iostream>
using namespace std;
typedef void(*func)();
class A {
public:
func f;
};
class B {
public:
A *a;
B() {
a = new A();
a->f = [](){
printf("Hello!");
};
}
};
int main() {
B *b = new B();
b->a->f();
return 0;
}
还没有捕获,但是当我想在 lambda 中捕获“this”指针时,它会引发错误。如何使用捕获制作 typedef?我想做这样的事情:
#include <iostream>
using namespace std;
typedef void(*func)();
class A {
public:
func f;
};
class B {
public:
A *a;
B() {
a = new A();
//There is a problem with [this]
a->f = [this](){
//Method from class B using "this" pointer
this->p();
};
}
void p() {
printf("Hello!");
}
};
int main() {
B *b = new B();
b->a->f();
return 0;
}
我究竟做错了什么?请解释一下。谢谢。