我列出了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;
}
答案 0 :(得分:1)
获取指向成员的指针在定义该成员的类内部和外部具有相同的语法;您需要
cout << "using inside the class " << combiner(x1, x2, &myclass::add) << endl;
也就是说,与main
中的情况完全一样。