使用typedef指针在类中起作用

时间:2019-11-07 08:21:35

标签: c++ function-pointers

我列出了C ++类中函数指针的不同用法。似乎没什么用,但是我想在类(combiner)中调用useAdd成员函数。

#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;
}

1 个答案:

答案 0 :(得分:1)

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

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

也就是说,与main中的情况完全一样。