一个类方法通过函数指针调用另一个类方法

One class method call another one via function pointer

本文关键字:类方法 函数 指针 调用 另一个 一个      更新时间:2023-10-16

出于某种原因,我必须通过函数指针从同一类的另一个方法调用类方法。这是说明我的问题的示例代码:

class testClass 
{
....
private:
void method(int parameter) {
    .....
};
void callingMethod();
};
typedef  void (testClass::*classMethod)(int parameter);
void testClass::callingMethod() {
    classMethod method = &testClass::method;
    method(1);
}

我收到编译错误

错误 C2064:术语的计算结果不是采用 1 个参数的函数。

执行此类调用的正确方法是什么?

你的语法是正确的,除了

method(1);

你应该使用

(this->*method)(1);

(*this.*method)(1);

检查这个:

class testClass 
{
     public:
     int method(int parameter) 
     {
        cout << "Hi";
        return 0;
     };
     void callingMethod();
};

int (testClass::*pt2Member)(int) = NULL;
void testClass::callingMethod()
{
     pt2Member = &testClass::method;
     (*this.*pt2Member)(12);
     //classMethod method = &testClass::method;
     //*method(1);
}
int main()
{
    testClass objTest;
    objTest.callingMethod();
    return 0;
}

它应该很简单

(this->*method)(10);