C++ 指向对象的类成员的指针

标签 c++ function class pointers

我有一个类,里面有一个数组。在这个数组中,我想将一个函数指针指向一个与我的实例具有相同 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/

相关文章:

c++ - 类型 "*const char *"的值不能分配给类型 "char *"的实体

c++ 指向非静态成员函数的指针

python - 使用其他数据帧的行作为 python 中的列表输入逐行应用函数

javascript - 如何将一堆 jquery 命令存储在一个可以通过单击事件调用的函数中

javascript - JavaScript 函数中参数的大小会影响其性能吗?

Java 集合类型参数到数组

c++ - 使用 g++ 在终端中运行 .cpp 文件时出错

c++ - 简单的 MIPS 指令和编译器

c# - 如何动态地向类添加属性

c++ - 在类访问混淆中声明的枚举类型