繁体   English   中英

将Void作为函数参数传递

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM