将C ++函数指针分配给同一对象的成员函数
如何让test.calculate中的函数指针赋值(可能还有其余的)工作?
#include <iostream>
class test {
int a;
int b;
int add (){
return a + b;
}
int multiply (){
return a*b;
}
public:
int calculate (char operatr, int operand1, int operand2){
int (*opPtr)() = NULL;
a = operand1;
b = operand2;
if (operatr == '+')
opPtr = this.*add;
if (operatr == '*')
opPtr = this.*multiply;
return opPtr();
}
};
int main(){
test t;
std::cout << t.calculate ('+', 2, 3);
}
没有找到相关结果
已邀请:
2 个回复
屉杆绊
不是指向成员函数的指针,它是指向自由函数的指针。声明一个成员函数指针,如下所示:
其次,在获取成员函数的地址时需要指定类范围,如下所示:
最后,要通过成员函数指针调用,有一些特殊的语法:
这是一个完整的工作示例:
陈獭
。请参阅http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.1 编辑:也使用
而不是
和
而不是
。事实上,使用类似于FAQ的typedef和宏,可能是成员函数参数,而不是类成员
和
。