将Vargs从内联函数传递给函数

时间:2014-12-03 16:05:40

标签: c++

我有两个功能:

我从foo函数收到了多个参数,我只想将它们发送到myOtherFunction函数。我该怎么办呢?

static inline void foo(const char* str, ...)
{
    void myOtherFunction(bool A, int B, [VARGS]);
}

2 个答案:

答案 0 :(得分:2)

在C ++ 11中:

template <typename ... Ts>
void foo(const char* str, Ts&&...args)
{
    myOtherFunction(A, B, std::forward<Ts>(args)...);
}

答案 1 :(得分:2)

您可以将va_list作为变量传递,例如:

void func2(int n, va_list vl)
{    
  int i;
  double val;
  printf ("Printing floats:");  
  for (i=0;i<n;i++)
  {
    val=va_arg(vl,double);
    printf (" [%.2f]",val);
  }  
  printf ("\n");
}

static inline void func1(int n, ...)
{    
    va_list vl;
    va_start(vl,n);
    func2(n,vl);
    va_end(vl);
}
int _tmain(int argc, _TCHAR* argv[])
{
    func1 (3,3.14159,2.71828,1.41421);
    return 0;
}