使用 typedef 指针指向 class 中的函数

using typedef pointer to function in class

我列出了 C++ 中函数指针的不同用法 class。它可能看起来没用,但我想在 class (useAdd).

中调用 combiner 成员函数
#include <iostream>

class myclass;
using namespace std;
typedef int (myclass::*myFuncType)(int, int);

class myclass
{
private:
    int a;
    int b;

public:
    ~myclass(){};

    int add(const int x1, const int x2)
    {
        return (x1 + x2);
    }
    int mult(const int x1, const int x2)
    {
        return (x1 * x2);
    }

    int combiner(const int x1, const int x2, myFuncType func)
    {
        return (this->*func)(x1, x2);
    }
    void useAdd(const int x1, const int x2)
    {
        cout << "using inside the class " << combiner(x1, x2, ??) << endl;
    }
};
/*------------------------------*/

int main()
{
    myclass classi;
    cout << classi.add(4, 5) << endl;

    myFuncType ptrName = &myclass::add;
    cout << (classi.*ptrName)(4, 5) << endl;
    cout << classi.combiner(4, 5, &myclass::add) << endl;

    // classi.useAdd(4, 5); ??

    return 0;
}

获取指向成员的指针在定义成员的 class 内部和外部具有相同的语法;你需要

cout << "using inside the class " << combiner(x1, x2, &myclass::add) << endl;

也就是说,与 main 完全一样。