C++:指向非相关结构内的类成员函数的指针

Aus*_*son 2 c++ function-pointers member-functions

我已经在线阅读了如何解决这个问题,我认为我正确地做了...我的目标是拥有一个结构对象数组,其中包含指向类的成员函数的指针.

这是我到目前为止所拥有的......

typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
    void someFunc(...);
    // ...
private:
    // ...
};

struct STRUCT
{
    HandlerPtr handler;
};

STRUCT stuff[]
{
    {&foo::someFunc}
};
Run Code Online (Sandbox Code Playgroud)

然后在使用(stuff [0].*handler)(),有或没有参数(我确实打算使用参数列表)调用函数时,我得到"处理程序":未声明的标识符...

我必须遗漏一些东西,只是不知道是什么.

Rem*_*eau 8

someFunc()不是静态方法,所以你需要一个foo对象实例,以便通过指针到方法变量调用someFunc(),即:

foo f;
f.*(stuff[0].handler)();
Run Code Online (Sandbox Code Playgroud)

要么:

foo f;
HandlerPtr mthd = stuff[0].handler;
f.*mthd();
Run Code Online (Sandbox Code Playgroud)

或者,使用指针:

foo *f = new foo;
f->*(stuff[0].handler)();
delete f;
Run Code Online (Sandbox Code Playgroud)

要么:

foo *f = new foo;
HandlerPtr mthd = stuff[0].handler;
f->*mthd();
delete f;
Run Code Online (Sandbox Code Playgroud)