我想要个cpp类它有一个成员变量可以存储任意的有operator的函数
以下是一个简单的示例代码,实现了一个类FunctionHolder,它有一个成员变量function,可以存储任意的有operator()的函数。
#include <functional>
class FunctionHolder {
public:
FunctionHolder(std::function<void()> f) : function(f) {}
void call() { function(); }
private:
std::function<void()> function;
};
int main() {
// 使用 lambda 表达式创建一个函数对象
auto f1 = []() { std::cout << "Hello, world!" << std::endl; };
FunctionHolder holder1(f1);
holder1.call(); // 输出:Hello, world!
// 使用 std::function 创建一个函数对象
std::function<void()> f2 = []() { std::cout << "Goodbye!" << std::endl; };
FunctionHolder holder2(f2);
holder2.call(); // 输出:Goodbye!
return 0;
}
在上面的示例中,我们使用了std::function来存储函数对象,这是一个通用的函数封装器,可以存储任意类型的可调用对象(函数、函数指针、成员函数指针、lambda 表达式等)。
在FunctionHolder类的构造函数中,我们将传入的函数对象存储到成员变量function中。在call()函数中,我们调用这个函数对象,实现了对任意可调用对象的封装和调用。
原文地址: http://www.cveoy.top/t/topic/bnmd 著作权归作者所有。请勿转载和采集!