在Objective-C中你可以这样说:
NSArray *anArray = [NSArray arrayWithObjects:obj,obj2, nil];
如果你不熟悉objective-c,它说我想要一个NSArray,anArray类型的对象,我想调用方法arrayWithObjects然后它作为一个标记并接受尽可能多的参数(在这种情况是对象)直到它达到零。
有没有办法实现这样的目标:
createObjects(o1,o2,o3,o4,-1);
函数方法可以接受多少个参数,直到达到某个键值为止?
现在,我知道你可以用C和C ++做哨兵的东西,但是有没有办法像Objective-C那样提供像这样的方法?
答案 0 :(得分:3)
您可以编写variadic function并使用哨兵找到最后一个真正的参数。
但是,在C ++中,这通常是一个坏主意,因为可变参数函数不是类型安全的。在C ++中,首选将要传递的元素放入某种容器,数组或类对象中,然后将其传递给函数。它更容易出错,更容易验证。
答案 1 :(得分:0)
我认为你要找的是varargs。