我有一个函数应该接受任何类型的参数。因此我使用模板。
template <typename T>
void Function(T Parameter);
函数调用一个函数。在我的真实应用程序中,有一个带有字符串键的回调映射,但这对这个问题无关紧要。回调必须是返回类型为 void 的函数指针,但可以是任何参数类型。
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T))Callback(Parameter);
}
假设回调是正确的类型,这应该像下面这样工作。
Function<int>(42);
// should result in...
(function<void(int))Callback(42);
但在某些情况下,我想将 void
作为参数传递。
Function<void>(void);
// should result in...
(function<void(void)>Callback(void);
如您所见,我不需要提供任何内容或 void
作为参数。但是我不能将 void
作为参数传递。存在类型名称不正确的错误。
如何将 void
作为函数参数传递?
最佳答案
只需指定一个非模板重载:
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T)>)Callback(Parameter);
}
void Function()
{
(function<void()>)Callback();
}
关于c++ - 将 'void' 作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662821/