在 C++ 中,如何声明指向类中方法的函数指针?
在 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。
In C++, I'm trying to define a type suitable for a pointer to one of several member functions of my class cBar
(all functions have the same interface, say accept an int
and return void
).
For now, I'm making a global type tHandler
suitable for a pointer to one of several global functions accepting an additional parameter me
, holding a pointer to my class cBar
, as follows:
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);
}
};
This is ugly; in particular Handler0
and Handler1
should be private methods of cBar
, and tHandler
should be a private type.
Any clue? TIA.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以声明指向成员的指针,
如下所示使用它(改编您自己的代码):
特别注意
operator ->*
,这不是你每天都能看到的。查看实际操作。
A pointer to a member can be declared like
Here's how to use it (adaptation of your own code):
Pay particular attention to the
operator ->*
, which is not something you see every day.See it in action.