使用 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
完全一样。
我列出了 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
完全一样。