クラス内の「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;
}
まだキャプチャはありませんが、ラムダで「この」ポインタをキャプチャしたい場合、エラーがスローされます。キャプチャで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;
}
私は何を間違っていますか?説明してください。ありがとう。