С++ функция с переменным количеством параметров-объектов класса

программирование C++ gcc

Реально ли написать функцию с переменным количеством в человеческом виде? Под человеческим видом имеется ввиду, что в качестве параметров не передается их количество, а так же нет ограничений на последний элемент (типа не передевать null, -1 или аналогичное).

Примечание:
>Объект класса также может передаваться в качестве параметров, значит и количество их может быть переменным.
Да ну? Код в студию, тогда поверю.

Примечание:
WidowMaker, переменное количество параметров и передача объекта-контейнера - это разные вещи

Примечание:
Yorie,не мог бы ты привести код, например функции для распечатки всех int, которые передаются в функцию, что бы вызвать можно было так:
func(1,2,3) или func(1,3,4,5,6) и именно так, а не: func(3,1,2,3) или func(5,1,3,4,5,6) или же func(1,2,3, NULL) или func(1,3,4,5,6, NULL)

Примечание:
WidowMaker, вы секретарь Yorie? Ведь дополнение было обращено не вам, об этом русским языком написано.

Примечание:
>если человек не способен понять ответ, желание помогать ему пропадает, увы
Причем тут способности понимать? Нашелся учасник с отличной от вашей точкой зрения, она мне интересна не более, чем ваша - вот и все. Нет оснований полагать ваш ответ исчерпывающим и однозначно-правильным, дайте и другим возможность высказывать свои мысли.

Примечание:
>Это не реально вообще и для любого языка
Да ну? А вот в C# есть "params", например.
Ответы:
РЕАЛЬНО, НО ДОЛГО БУДЕТ
да, передавать stl контейнеры
Вот пример для функций с переменным количеством параметров. Объект класса также может передаваться в качестве параметров, значит и количество их может быть переменным.
http://www.cyberforum.ru/post107187.html
Если и возможно, то в С++ это делать не стоит. Потому что при передачи параметров, они байт в байт просто копируются и теряется информация о типе. В стандарте С++0х ввели шаблоны с переменным кол-вом параметров, смотри в эту сторону.
Используйте STL va_list(). Не заметил в реализации ничего нечеловеческого.
John Omega, тебе русским языком все расписали, va_list - это элипсисы...(Yorie, просто не различает...)
Передача без указания типа и числа невозможна в языке подобном С++. Нет в нем конструкций поддерживающих это.
Это не реально вообще и для любого языка. Чем "проще" хотите что-то получить, тем сложнее оно выйдет.
Даже если синтаксис языка допускает неопределенность, чего-либо, то всё равно в реализации кода вы сами должны будете предусмотреть передачу и контроль всего того, что изначально не определили.
"Дополнение #6 28.03.2011 15:12:15
Да ну? А вот в C# есть "params", например."
Я, честно говоря, удивляюсь - Вы не смогли найти решение в интернете? Хотите "человеческую" по Вашему мнению функцию с переменным количеством параметров? Пример:
double f(double n, ...)
{
 double *p = &n;
 double sum = 0;
 while (*p)
 {
   sum += (*p);
   *p++;
 }
 return ((sum) ? sum : 0);
}


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.