[英]Pass Void as Function Parameter
我有一个函数应该接受任何类型的参数。 因此我使用模板。
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.