函数调用中参数引用的变量列表

时间:2013-07-29 19:56:33

标签: c++ pass-by-reference variadic-functions

我正在尝试编写一个接受可变数量参数的函数。我的研究指导我学习va_list及其方法(va_start,va_end,va_arg)。问题是我传入此函数的参数是对函数外部创建的对象的引用。

myClass obj1, obj2, obj3;
modifyObjects(3, obj1, 55, obj2, 33, obj, 35)

这是我尝试的实现:

void modifyObjects(int numObjects, ...)
{
  va_list;
  va_start(list, numObjects);
  int i;
  for(i=0;i<numObjects;++i)
  {
    myClass* tempObjectHandle = va_arg(list, &myClass ); //get the reference to the object (THIS DOES NOT WORK!)
    int size = va_arg(list, int); //get the size
    tempObjectHandle->set(size); //tempObjectHandle should be pointing to object defined outside the function to set its size
  }
  va_end(list);
}

有没有办法创建对象并将对这些对象的引用变量列表传递给函数,这样一旦函数返回,所有对象都被修改了?

附加信息:

我也受限于C ++ 03标准,即ARM编译器支持的标准。

谢谢!

1 个答案:

答案 0 :(得分:1)

myClass* tempObjectHandle = va_arg(list, &myClass );

这应该是myClass* tempObjectHandle = va_arg(list, myClass* );

您一直在说您正在传递对modifyObjects的引用。事实上,你正在传递指针。