C++类内成员函数指针调用方法求助
类内成员函数指针的正确调用方式
你的代码有两个核心问题需要修正,下面是完整的正确实现,再逐一说明关键点:
class A { typedef void(A::*Exec)(); // 定义指向无参无返回值成员函数的指针类型 void Method(Exec exec) // 接收该指针类型参数的方法 { (this->*exec)(); // 通过当前对象调用成员函数指针 } void SingleProcedure() { /* 代码实现 */ } // 可添加更多同类型成员函数 void AnotherProcedure() { /* 代码实现 */ } public: void Init() { // 正确传递成员函数指针:不要加括号 Method(&A::SingleProcedure); // 调用另一个成员函数示例 Method(&A::AnotherProcedure); } };
关键修正说明:
- 传递成员函数指针:
&A::SingleProcedure是正确写法,你原代码里的&A::SingleProcedure()会触发函数调用,传递的是函数返回值(而你的函数返回void,本身就错误),我们需要的是函数地址,因此不能加括号。 - 调用成员函数指针:成员函数必须绑定到类实例才能执行,所以
Method里要用(this->*exec)()的语法——this代表当前类的对象实例,->*是成员函数指针的专用调用运算符,外层括号是为了保证运算优先级正确。
如果需要调用更多同类型成员函数,只需要按同样方式传递对应的成员函数指针给Method即可。
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

