0

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

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

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

有没有办法实现这样的事情:

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

函数的方法在哪里可以接受尽可能多的参数,直到它达到某个键值?

现在,我知道你可以在 C 和 C++ 中做标记的东西,但是有没有办法像在 Objective-C 中那样为方法提供类似的东西?

4

2 回答 2

3

您可以编写一个可变参数函数并使用哨兵来定位最后一个实参。

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

于 2010-11-06T04:16:23.160 回答
0

我认为您正在寻找的是varargs

于 2010-11-06T04:17:12.537 回答