C ++ - 设置等于参数的函数

时间:2014-06-30 14:07:23

标签: c++ parameter-passing

我对c ++很陌生,但我试图移植我已经开始的Flash游戏。我试图将函数作为参数传递,然后设置一个等于该函数的属性。

class Param
{
    private:
    float function();
    float value;

    public:
    Param(float (func)());
    Param(float (func)(), float value);
    ~Param();

    void update();
};

我尝试过类似的事情:

Param::Param(float (func)()) {
    this.function = func;
}

但它似乎并不喜欢这样。我不确定它是否也需要指针,我只想在Param实例化时指定它而不是传递可能被删除的引用。

编辑:如果有人也可以回答,有没有办法让这些函数可以传递?如果在没有指定的情况下默认为默认的函数?

1 个答案:

答案 0 :(得分:5)

通常,你需要一个指针

class Param
{
    private:
    float (*function)();
    float value;

    public:
    Param(float (*func)());
    Param(float (*func)(), float value);
    ~Param();

    void update();
};

&对于实际调用中的参数不需要,
你可以传递一个函数的纯名称 (有或没有&amp ;,但没有任何括号!)

但是:传递的函数不能成为某个类实例的一部分 只有“原始”函数(可能在名称空间中)或静态类方法 使用std :: function来启用类实例方法和lambdas等:

class Param
{
    private:
    std::function<float()> function;
    float value;
    public:
    Param(std::function<float()> func);
    Param(std::function<float()> func, float value);
    ~Param();

    void update();
};

无论如何都可以通过上述正常功能 (看一下std :: bind&amp; Co来了解如何传递类方法)