在C ++ / C中有什么类似方法/函数的标记吗?

时间:2010-11-06 04:13:36

标签: c++ objective-c c sentinel

在Objective-C中你可以这样说:

NSArray *anArray = [NSArray arrayWithObjects:obj,obj2, nil];

如果你不熟悉objective-c,它说我想要一个NSArray,anArray类型的对象,我想调用方法arrayWithObjects然后它作为一个标记并接受尽可能多的参数(在这种情况是对象)直到它达到零。

有没有办法实现这样的目标:

createObjects(o1,o2,o3,o4,-1);

函数方法可以接受多少个参数,直到达到某个键值为止?

现在,我知道你可以用C和C ++做哨兵的东西,但是有没有办法像Objective-C那样提供像这样的方法?

2 个答案:

答案 0 :(得分:3)

您可以编写variadic function并使用哨兵找到最后一个真正的参数。

但是,在C ++中,这通常是一个坏主意,因为可变参数函数不是类型安全的。在C ++中,首选将要传递的元素放入某种容器,数组或类对象中,然后将其传递给函数。它更容易出错,更容易验证。

答案 1 :(得分:0)

我认为你要找的是varargs