[英]In C++, how do I declare a function pointer to a method in a class?
在C ++中,我试图定义一个适合于指向类cBar
的几个成员函数之一的指针的类型(所有函数都具有相同的接口,比如说接受一个int
并返回void
)。
现在,我正在使全局类型tHandler
适合于指向几个接受附加参数me
全局函数之一的指针,并持有指向我的类cBar
的指针,如下所示:
typedef void(*tHandler)(class cBar *const me, int val);
void Handler0(class cBar *const me, int val);
void Handler1(class cBar *const me, int val);
class cBar {
tHandler fCurrentHandler;
/*..*/
public:
inline void cBar::CurrentHandler(int val) {
(*fCurrentHandler)(this,val);
}
inline cBar() {
fCurrentHandler = Handler0;
CurrentHandler(0);
}
inline ~cBar() {
CurrentHandler(-1);
}
};
这很丑; 特别是Handler0
和Handler1
应该是私有方法cBar
和tHandler
应该是一个私有类型。
有什么线索吗? TIA。
指向成员的指针可以像这样声明
typedef void(Trustee::*tHandler)(int);
这是使用方法(适应您自己的代码):
class Trustee {
typedef void(Trustee::*handler_t)(int);
handler_t pfCurrentHandler;
void handlerOne(int i) { cout << "HandlerOne: " << i << endl; }
void handlerTwo(int i) { cout << "HandlerTwo: " << i << endl; }
public:
void CurrentHandler(int val) {
(this->*pfCurrentHandler)(val);
}
Trustee() : pfCurrentHandler(&Trustee::handlerOne) {
CurrentHandler(0);
}
~Trustee() {
CurrentHandler(-1);
}
};
要特别注意operator ->*
,这不是您每天都能看到的。
看到它在行动 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.