3行代码告诉你,如何使用成员函数指针作为函数参数

3行代码告诉你,如何使用成员函数指针作为函数参数

//定义成员函数指针
typedef void(Sheet:: *ReadObjFunc)(string);  //Sheet为类名
//使用成员函数指针为参数
bool Sheet::ReadObj(string strObjData, ReadObjFunc readObjFuc)
{
		(this->*readObjFuc)(strObjData);
}
ReadObj(str, "Circle", &Sheet::ReadCircle);//调用
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
成员函数指针可以作为使用,可以用它来定义函数指针变量、成员变量、函数参数等。 例如,假设有一个`MyClass`,其中有一个成员函数`int add(int a, int b)`,可以定义一个函数指针型`FuncPtr`,如下所示: ``` class MyClass { public: int add(int a, int b) { return a + b; } }; using FuncPtr = int (MyClass::*)(int, int); // 定义函数指针型 void func(FuncPtr pFunc, MyClass& obj, int a, int b) { int result = (obj.*pFunc)(a, b); // 调用成员函数 // do something with result } int main() { MyClass obj; FuncPtr pFunc = &MyClass::add; // 定义函数指针变量 func(pFunc, obj, 1, 2); // 调用函数 return 0; } ``` 在上面的代码中,首先定义了一个`MyClass`对象`obj`,然后定义了一个成员函数指针型`FuncPtr`,并使用`using`关键字定义了一个别名。接着定义了一个函数`func`,其中有一个参数是`FuncPtr`型的成员函数指针变量`pFunc`。在`main`函数中,将`&MyClass::add`赋值给`pFunc`,并调用`func`函数,传入`pFunc`、`obj`和参数1、2。 需要注意的是,在定义成员变量时,需要使用指向成员函数指针型来定义,例如: ``` class MyClass { public: int add(int a, int b) { return a + b; } private: int (MyClass::*pFunc)(int, int); // 定义成员变量 }; ``` 在定义函数参数时,需要使用指向成员函数指针型来定义,例如: ``` class MyClass { public: int add(int a, int b) { return a + b; } }; void func(int (MyClass::*pFunc)(int, int), MyClass& obj, int a, int b) { int result = (obj.*pFunc)(a, b); // 调用成员函数 // do something with result } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Finn Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值