我已经做了一些阅读网上至于如何去这件事,我觉得我做正确...我的目标是有一个包含指向的成员函数结构对象的数组类。

这是我迄今为止...

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

struct STRUCT
{
    HandlerPtr handler;
};

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

然后使用(东西[0] *处理器)(),带或不带参数的(我的确打算使用的参数列表)调用函数时,我得到“经理人”:未声明的标识符...

我必须失去了一些东西,只是不知道是什么。

有帮助吗?

解决方案

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

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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top