2

我已经在网上阅读了一些关于如何解决这个问题的文章,我认为我做得对......我的目标是拥有一个结构对象数组,其中包含指向类的成员函数的指针。

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

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

struct STRUCT
{
    HandlerPtr handler;
};

STRUCT stuff[]
{
    {&foo::someFunc}
};

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

我必须错过一些东西,只是不知道是什么。

4

1 回答 1

8

someFunc() 不是静态方法,因此您需要一个 foo 对象实例才能通过指向方法的变量调用 someFunc() ,即:

foo f;
f.*(stuff[0].handler)();

或者:

foo f;
HandlerPtr mthd = stuff[0].handler;
f.*mthd();

或者,使用指针:

foo *f = new foo;
f->*(stuff[0].handler)();
delete f;

或者:

foo *f = new foo;
HandlerPtr mthd = stuff[0].handler;
f->*mthd();
delete f;
于 2009-09-22T23:36:52.667 回答