以下是一个简单的示例代码,实现了一个类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()函数中,我们调用这个函数对象,实现了对任意可调用对象的封装和调用。

我想要个cpp类它有一个成员变量可以存储任意的有operator的函数

原文地址: http://www.cveoy.top/t/topic/bnmd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录