Есть ли что-нибудь вроде метода / функции стража в C ++ / C? - PullRequest
0 голосов
/ 06 ноября 2010

В Objective-C вы можете сказать что-то вроде:

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

В случае, если вы не знакомы с target-c, он говорит, что мне нужен объект типа NSArray, anArray, и я хочу вызвать метод arrayWithObjects, а затем он действует как часовой и принимает столько параметров (что в в этом случае объекты), пока не достигнет нуля.

Есть ли способ добиться чего-то подобного:

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

Где метод функции может принимать столько параметров, пока не достигнет некоторого ключевого значения?

Теперь я знаю, что вы можете делать дозорные вещи в C и C ++, но есть ли способ предоставить что-то подобное этому методу, как они делают в Objective-C?

Ответы [ 2 ]

3 голосов
/ 06 ноября 2010

Вы можете написать переменную функцию и использовать часовой для определения последнего действительного аргумента.

Однако в C ++ это обычно плохая идея, поскольку функции с переменным числом не безопасны для типа,В C ++ предпочтительно помещать элементы, которые вы хотите передать, в контейнер, массив или объект класса, а затем передавать это функции.Это намного менее подвержено ошибкам и намного легче проверить.

0 голосов
/ 06 ноября 2010

Я думаю, что вы ищете varargs .

...