用户定义的函数作为传递给cpp类构造函数

时间:2018-04-15 08:41:29

标签: c++

我希望有一个类成员,它是指向未定义的典型函数的指针 该功能必须由用户执行。用户必须将函数作为参数传递给类构造函数。 该函数在类methodes的范围内调用。 我可以这样做这些任务吗?

class MyClss
{
    private:    
    bool (*f)();

    public:
    MyClss(bool (*fp)());
    void MyMethod();
}

MyClss::MyClss(bool (*fp)())
{
    f = fp;
}

void MyClss::MyMethod()
{
    // do tasks
    if(f())
    {
        // do tasks
    }
}

1 个答案:

答案 0 :(得分:0)

您提供的代码将正常运行。请参阅下面的代码,但使用std::function头文件中的<functional>

#include <functional>

// The function prototype.
typedef std::function<bool()> MyFunction;

class MyClss
{
    private:    
    MyFunction f;

    public:
    MyClss(MyFunction fp);
    void MyMethod();
};

MyClss::MyClss(MyFunction fp)
{
    f = fp;
}

void MyMethod()
{
    // do tasks
    if(f())
    {
        // do tasks
    }
}