如何调用存放在外部结构体中的类成员函数指针?
C++成员函数指针调用语法修正
你当前的代码无法运行,核心问题是成员函数指针的调用语法错误。C++中通过对象指针调用成员函数指针时,需要使用->*操作符来关联对象指针和成员函数指针,而非分开使用->和.*。
修正后的代码
struct CALLBACK_DATA { Object *pointer; void (Object::*callback)(); }; int main() { CALLBACK_DATA data = getData(); // 正确的调用写法 (data.pointer->*data.callback)(); }
关键说明
- 必须使用
->*操作符:当持有对象指针(data.pointer)和成员函数指针(data.callback)时,需要用->*将二者绑定,才能正确调用成员函数。 - 括号不可省略:由于
->*的优先级低于函数调用运算符(),必须用括号包裹data.pointer->*data.callback,确保先完成指针绑定,再执行函数调用。
内容的提问来源于stack exchange,提问作者Praveen Kumar
相关产品推荐
相关产品推荐

