gpt4 book ai didi

具有两种类型参数的c++可变参数/可变参数函数

转载 作者:太空狗 更新时间:2023-10-29 19:39:49 28 4
gpt4 key购买 nike

我正在尝试实现可变参数函数。我在网上搜索并最终发现大多数示例只处理一种类型的参数(例如计算许多整数的平均值)。我的情况是参数类型不固定。它可以同时涉及 char*、int 或两者。这是我最终得到的代码:

void insertInto(int dummy, ... ) {
int i = dummy;
va_list marker;
va_start( marker, dummy ); /* Initialize variable arguments. */
while( i != -1 ) {
cout<<"arg "<<i<<endl;
/* Do something with i or c here */
i = va_arg( marker, int);
//c = va_arg( marker, char*);
}
va_end( marker ); /* Reset variable arguments. */

现在,如果我只需要处理整数,这就可以正常工作了,但是正如您所见,我在注释中有一个 char* c 变量,我想在参数是 char* 的情况下使用它。

那么问题来了,在不知道 va_arg 是 int 还是 char* 的情况下如何处理它的返回值?

最佳答案

由于您使用的是 C++,因此无需使用非类型化的 C 样式可变参数函数。

您可以简单地定义一个可链接的方法,例如

  class Inserter
{
public:
Inserter& operator()( char const* s )
{
cout << s << endl;
return *this;
}

Inserter& operator()( int i )
{
cout << i << endl;
return *this;
}
};

然后像这样使用

Inserter()( "blah" )( 42 )( "duh" )

具有模板化插入操作的变体,通常用于构建字符串。

干杯,

关于具有两种类型参数的c++可变参数/可变参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4904327/

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