2009-09-22 42 views
2

我已经做了一些在线阅读,了解如何去做这件事,我想我正确地做到了......我的目标是有一个包含指向类成员函数指针的结构对象数组。C++:在非相关结构中指向类成员函数的指针

这里是我迄今为止...

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

struct STRUCT 
{ 
    HandlerPtr handler; 
}; 

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

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

我必须缺少的东西,只是不知道什么。

回答

8

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;