在C++11中,可以使用std::function和std::bind来将类中的函数作为参数传递给同一类中的另一个函数。
首先,需要包含头文件<functional>。
然后,定义一个成员函数指针类型,用于指向类中的函数。例如,假设有一个类MyClass,其中有一个成员函数void func(int),可以定义一个成员函数指针类型如下:
typedef void (MyClass::*FuncPtr)(int);
接下来,在类中定义一个接受成员函数指针作为参数的函数。例如,假设有一个成员函数void callFunc(FuncPtr ptr, int value),可以在类中定义如下:
void callFunc(FuncPtr ptr, int value)
{
(this->*ptr)(value);
}
在调用callFunc函数时,可以将类中的函数作为参数传递进去。例如,假设有一个成员函数void myFunc(int),可以这样调用callFunc函数:
MyClass obj;
FuncPtr ptr = &MyClass::myFunc;
obj.callFunc(ptr, 10);
这样,callFunc函数就会调用myFunc函数,并传递参数10。
需要注意的是,如果成员函数是静态函数,则不需要使用成员函数指针,直接将静态函数名作为参数传递即可。
以上是在C++11中将类中的函数作为参数传递给同一类中的另一个函数的方法。对于更复杂的情况,可以使用std::function和std::bind来实现更灵活的函数传递和绑定。
T-Day
云+社区技术沙龙[第14期]
云+社区技术沙龙[第22期]
云+社区技术沙龙[第29期]
腾讯位置服务技术沙龙
serverless days
云+社区技术沙龙[第8期]
云+未来峰会
Elastic 中国开发者大会
领取专属 10元无门槛券
手把手带您无忧上云