gpt4 book ai didi

c++ - 将 'void' 作为函数参数传递

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:06 25 4
gpt4 key购买 nike

我有一个函数应该接受任何类型的参数。因此我使用模板。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com