我正在尝试编写一个接受可变数量参数的函数。我的研究指导我学习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编译器支持的标准。
谢谢!
答案 0 :(得分:1)
myClass* tempObjectHandle = va_arg(list, &myClass );
这应该是myClass* tempObjectHandle = va_arg(list, myClass* );
您一直在说您正在传递对modifyObjects
的引用。事实上,你正在传递指针。