如何编写接受未知类型和参数数量的C ++函数?

时间:2013-01-24 13:43:16

标签: c++ argument-passing

我想写一个这种类型的函数:

void Print(void* args ...)
{
   while(args)
     cout<<args[i];
}

该函数应该处理int和(std :: string或char *)

有可能吗?

2 个答案:

答案 0 :(得分:6)

您可以使用可变参数模板执行此操作:

void Print() { }

template <typename T, typename ...Args>
void Print(T const & t, Args const &... args)
{
    cout << t;
    Print(args...);
}

答案 1 :(得分:4)

应答

  

concatenation variable type/number of arguments to one string

不需要为此编写自己的函数,只需使用std::stringstream

std::stringstream ss;
ss << intVar << stringVar << whatever;