C++,,将一个类的成员函数作为入参传递给一个全局函数,并在该全局函数中调用此函数。该类的成员函数有修改类的相关属性
时间: 2024-10-13 22:02:37 浏览: 19
C# 回调CV++ DLL 三种方法 和 多类之间共享一个回调函数
在C++中,你可以通过使用指针或引用来实现这样的功能。假设有一个名为`MyClass`的类,它有一个可以修改类属性的成员函数`updateProperty()`. 首先,你需要声明这个成员函数,然后定义全局函数`processMemberFunction(MyClass::*func)`,接受一个指向`MyClass`成员函数的指针或引用。
```cpp
class MyClass {
public:
int myProperty;
void updateProperty(int newValue) {
myProperty = newValue;
}
};
// 全局函数,接收并调用成员函数
void processMemberFunction(MyClass::*func, MyClass& obj) {
// 使用->
(obj.*func)(5); // 这里传入新的值,例如5
}
int main() {
MyClass obj;
// 将成员函数的地址赋值给指针
processMemberFunction(&MyClass::updateProperty, obj);
// 输出更新后的属性
cout << "Updated property: " << obj.myProperty << endl;
return 0;
}
```
在这个例子中,`processMemberFunction`接受的是`updateProperty`函数的指针,并通过`obj`实例间接调用了它。注意,在调用时使用了成员函数运算符`( .*)`。
阅读全文