,可以通过使用函数指针或者函数对象来实现。
示例代码:
class MyClass {
public:
void memberFunction(int arg1, int arg2) {
// 类成员函数的实现
}
};
// 定义函数指针类型
typedef void (MyClass::*MemberFunctionPtr)(int, int);
// 外部函数接受类成员函数指针作为参数
void externalFunction(MemberFunctionPtr funcPtr, MyClass* obj, int arg1, int arg2) {
// 调用类成员函数
(obj->*funcPtr)(arg1, arg2);
}
int main() {
MyClass obj;
MemberFunctionPtr funcPtr = &MyClass::memberFunction;
externalFunction(funcPtr, &obj, 1, 2);
return 0;
}
operator()
,可以将类成员函数封装为函数对象,并通过函数对象调用类成员函数。在C++中,可以使用std::function
来定义函数对象类型。示例代码:
#include <functional>
class MyClass {
public:
void memberFunction(int arg1, int arg2) {
// 类成员函数的实现
}
};
// 外部函数接受函数对象作为参数
void externalFunction(std::function<void(int, int)> funcObj, int arg1, int arg2) {
// 调用类成员函数
funcObj(arg1, arg2);
}
int main() {
MyClass obj;
std::function<void(int, int)> funcObj = std::bind(&MyClass::memberFunction, &obj, std::placeholders::_1, std::placeholders::_2);
externalFunction(funcObj, 1, 2);
return 0;
}
以上是将带有任意数量参数的任何类成员函数传递给类外部的函数的实现方法。根据具体的需求和场景,选择合适的方法来实现函数的传递。
领取专属 10元无门槛券
手把手带您无忧上云