1

我正在尝试编写一个接收可变数量参数的函数。我的研究指导我了解 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);
}

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

附加信息:

我还受到 ARM 编译器支持的 C++03 标准的限制。

谢谢!

4

1 回答 1

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

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

您一直说您正在传递对modifyObjects. 实际上,您正在传递指针。

于 2013-07-29T20:01:37.873 回答