TA的每日心情 | 开心 2026-4-27 11:48 |
|---|
签到天数: 4186 天 [LV.Master]伴坛终老
|

消息来自- 北京
调试中遇见这个报错信息,
ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say '&ZButton::OnKeyPress'
实际代码如下,
ZEvent_t ZButton::OnKeyPress( FEICmd_Key_t key )
{
if( key == ZSERVER_SELECT_KEY )
{
return (ZEvent_t)EVENT_BN_CLICKED ;
}
return EVENT_UNKNOWN_MESSAGE;
}
FEI_ON_KEYPRESS_MESSAGE( OnKeyPress )
#define FEI_ON_KEYPRESS_MESSAGE(memberFxn)\
{MESSAGE_REMOTE_FRONT_KEYBOARD, MSG_KEYPRESS, ANY_INSID, (ZEvent_t)EVENT_UNKNOWN_MESSAGE, (FEI_PMSG)&memberFxn},
怎么解决?
Because the syntax of C++. The expression &T::f is a pointer to member. No other syntax will do, not T::f or &(T::f) or just plain f.
所以,我修改如下:
FEI_ON_KEYPRESS_MESSAGE(&ZButton::OnKeyPress )
#define FEI_ON_KEYPRESS_MESSAGE(memberFxn)\
{MESSAGE_REMOTE_FRONT_KEYBOARD, MSG_KEYPRESS, ANY_INSID, (ZEvent_t)EVENT_UNKNOWN_MESSAGE, (FEI_PMSG)memberFxn},
好了。 |
|