在类中设置std::function可以通过以下步骤实现:
下面是一个示例代码:
#include <functional>
class MyClass {
public:
using MyFunction = std::function<void(int)>;
MyClass(MyFunction func) : myFunc(func) {}
void callFunc(int value) {
myFunc(value);
}
private:
MyFunction myFunc;
};
void myFunction(int value) {
// 执行一些操作
}
class AnotherClass {
public:
void anotherFunction(int value) {
// 执行一些操作
}
};
int main() {
MyClass obj1(std::bind(&myFunction, std::placeholders::_1));
obj1.callFunc(10);
AnotherClass obj2;
MyClass obj3([&](int value) { obj2.anotherFunction(value); });
obj3.callFunc(20);
return 0;
}
在上面的示例中,MyClass类中声明了一个名为MyFunction的类型别名,用于存储std::function对象。构造函数接受一个函数对象或函数指针,并将其绑定到myFunc成员变量上。callFunc函数使用myFunc调用函数。
在main函数中,我们创建了两个MyClass对象,分别使用std::bind和lambda表达式将函数对象或函数指针绑定到std::function对象上。然后通过调用callFunc函数来执行相应的函数。
这种方式可以灵活地在类中设置std::function,并且可以使用不同的函数对象或函数指针进行绑定。
领取专属 10元无门槛券
手把手带您无忧上云