Eva*_*ard 1 c++ parameter-passing
我对c ++很陌生,但我正试图移植我已经开始的flash游戏.我试图将函数作为参数传递,然后设置一个等于该函数的属性.
class Param
{
private:
float function();
float value;
public:
Param(float (func)());
Param(float (func)(), float value);
~Param();
void update();
};
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
Param::Param(float (func)()) {
this.function = func;
}
Run Code Online (Sandbox Code Playgroud)
但似乎并不喜欢这样.我不确定它是否需要成为指针,我想在Param实例化时指定它而不是传递可能被删除的引用.
编辑:如果有人也可以回答,有没有办法让这些函数可选择传递?如果在没有指定的情况下默认为默认的函数?
通常,你需要一个指针
class Param
{
private:
float (*function)();
float value;
public:
Param(float (*func)());
Param(float (*func)(), float value);
~Param();
void update();
};
Run Code Online (Sandbox Code Playgroud)
不需要实际调用中的&参数,
您只需传递函数的纯名称
(带或不带&,但不带任何括号!)
但是:传递的函数不能成为某个类实例的一部分.
只有"原始"函数(可能在名称空间中)或静态类方法.
使用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();
};
Run Code Online (Sandbox Code Playgroud)
无论如何都可以通过如上所述的正常功能.
(看一下std :: bind&Co来了解如何传递类方法)
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |