我有一个类,里面有一个数组。在这个数组中,我想将一个函数指针指向一个与我的实例具有相同 this 指针的函数。
class Foo {
std::vector <void (*baz)> bar;
void baz () {};
}
Foo bundy;
bundy.bar.push_back (/*???*/);
如何做到这一点?我想,当我像 &Foo::baz()
一样运行它时,baz
没有(有效的)this 指针或没有指向实例。
什么是好的解决方法?
最佳答案
而不是存储指向 *baz
的指针,你可以存储一个 std::function<void()>
.
然后您可以存储一个带有绑定(bind)实例的 lambda:
Foo bundy;
bundy.bar.push_back([&bundy](){ bundy.baz(); });
你的类看起来像这样:
class Foo {
public:
std::vector<std::function<void()>> bar;
void baz() {};
};
关于C++ 指向对象的类成员的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42721866/