jai*_*lis 3 c++ function variadic-functions
我正在尝试实现一个可变函数.我搜索了网络并最终发现大多数示例只处理一种类型的参数(例如计算许多整数的平均值).我的情况下,参数类型不固定.它可以同时涉及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. */
Run Code Online (Sandbox Code Playgroud)
现在这可以正常工作,如果我只需要处理整数但是你看到我在注释中有一个char*c变量,我想在参数是char*的情况下使用它.
所以问题是,如何在不知道它是int还是char*的情况下处理va_arg的返回值?
Che*_*Alf 11
因为你正在做c ++,所以不需要使用无类型的C风格的可变参数函数.
你可以简单地定义一个可链接的方法类似
class Inserter
{
public:
Inserter& operator()( char const* s )
{
cout << s << endl;
return *this;
}
Inserter& operator()( int i )
{
cout << i << endl;
return *this;
}
};
Run Code Online (Sandbox Code Playgroud)
然后使用喜欢
Inserter()( "blah" )( 42 )( "duh" )
Run Code Online (Sandbox Code Playgroud)
带有模板化插入操作的变体,通常用于构建字符串.
干杯和hth.,