Twi*_*ard 1 c++ templates parameter-passing std-function
如果这是一个非常菜鸟的问题,我很抱歉,但我对如何指定 std::function 参数列表感到困惑,如下所示:
std::function<void(double)> func;
Run Code Online (Sandbox Code Playgroud)
但在实际的函数中,这是行不通的:
void passFunc(void(double) func) {}
Run Code Online (Sandbox Code Playgroud)
对于上面的方法,您必须指定一个函数指针。那么如何允许 void(double) 传递到 std::function 中?void(double) 是一种类型吗?如果不是,它怎么会出现在 std::function 的参数列表中?如果它是类型,为什么 void(double) 作为函数参数的类型是无效的?
您可以声明这样的类型:
using Func = void(double);
Run Code Online (Sandbox Code Playgroud)
但在定义中,您仍然需要参数的名称;否则,您无法在函数中使用它:
void passFunc(void func(double)) {}
Run Code Online (Sandbox Code Playgroud)
请注意,它func
位于返回类型和参数之间。如果你不喜欢这样,你可以使用上面定义的类型:
void passFunc(Func func) {}
Run Code Online (Sandbox Code Playgroud)