dan*_*jar 5 c++ parameters templates function void
我有一个函数应该接受任何类型的参数.因此我使用模板.
template <typename T>
void Function(T Parameter);
Run Code Online (Sandbox Code Playgroud)
该函数的作用是调用函数.在我的实际应用程序中,有一个带字符串键的回调映射,但这与此问题无关.回调必须是函数指针,返回类型为void,但任何参数类型.
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T))Callback(Parameter);
}
Run Code Online (Sandbox Code Playgroud)
假设回调是正确的类型,这应该像下面这样工作.
Function<int>(42);
// should result in...
(function<void(int))Callback(42);
Run Code Online (Sandbox Code Playgroud)
但在某些情况下,我想传递void参数.
Function<void>(void);
// should result in...
(function<void(void)>Callback(void);
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要提供任何内容或void作为参数.但我不能void作为参数传递,有一个错误,类型名称将是不正确的.
我如何void作为函数参数传递?
为什么不指定非模板重载?
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T)>)Callback(Parameter);
}
void Function()
{
(function<void()>)Callback();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3392 次 |
| 最近记录: |