Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.62
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
#1

Функции с переменным числом аргументов - C++

10.08.2010, 11:19. Просмотров 7973. Ответов 24
Метки нет (Все метки)

на пример sum(2,56,515,-23.65,548)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2010, 11:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции с переменным числом аргументов (C++):

GCC и функции с переменным числом аргументов - C++
Писал мини приложение в студии для работы с векторами, один из методов просто получает сколько угодно аргументов и заполняет координаты...

Шаблон с переменным числом аргументов, и возвращаемое значение функции - C++
Здравствуйте! Использую С++11. Хочу возвращать элементы кортежа пытаюсь так, auto Deserialize(unsigned long long i) ->...

Шаблоны с переменным числом аргументов - C++
Написал шаблон функции с переменным числом аргументов которая считает сумму своих аргументов. Практики по этому вопросу не имею, поэтому...

Шаблонная функция с переменным числом аргументов - C++
Сабж. Каким образом можно запретить использование шаблонной функции, если тип одного из аргументов не соответствует требуемому? Есть...

Инициализация std::tuple переменным числом аргументов - C++
Добрый вечер. Мне нужно инициализировать объект std::tuple, который является членом некоторого другого шаблонного класса с переменным...

Функция с переменным числом аргументов (через шаблоны) - C++
Доброго времени суток! Встал вопрос с реализацией такой функции. template<typename... Args> returntype functionname(const Args&......

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
10.08.2010, 12:05 #2
nikkka, можно. Яркий пример - функции printf, scanf

Добавлено через 1 минуту
Вот так оно реализуется в С++

Добавлено через 35 минут
А с приходом стандарта С++0x нас ожидают еще и шаблоны с переменным числом аргументов
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
10.08.2010, 12:18  [ТС] #3
Цитата Сообщение от Nameless One Посмотреть сообщение
шаблоны с переменным числом аргументов
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
10.08.2010, 14:19 #4
nikkka, если данные однотипные, то можно передавать указатель на массив
Evg
Эксперт CАвтор FAQ
17622 / 5846 / 375
Регистрация: 30.03.2009
Сообщений: 16,123
Записей в блоге: 26
10.08.2010, 14:53 #5
Только это правильно называется с "переменным числом аргументов". Есть ещё и научное название - "эллипс" (ellipsis). Слэнговое название "три точки" (threedot)

Пример есть тут. Но он несколько корявый, в том плане, что все аргументы одного и того же типа
http://www.cplusplus.com/reference/c...stdarg/va_arg/

Модешь по форуму поискать с ключевым словом "va_arg"
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.08.2010, 22:02 #6
Цитата Сообщение от Evg Посмотреть сообщение
Есть ещё и научное название - "эллипс" (ellipsis).
Научное название "эллипсис", как и указано в скобках.
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
10.08.2010, 22:13  [ТС] #7
то есть ""элипсис""?
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.08.2010, 23:09 #8
Цитата Сообщение от nikkka Посмотреть сообщение
то есть ""элипсис""?
Существуют функции, в описании которых невозможно указать число и типы всех допустимых параметров. Тогда список формальных параметров завершается эллипсисом (...), что означает: "и, возможно, еще несколько аргументов".
Страуструп
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
11.08.2010, 18:11 #9
В книге(справочнике) "Язык программирования C"(авторы Харбисон и Стил) было про это написано если найду напишу...

Добавлено через 1 час 14 минут
Нашёл в разделе "Стандертные дополнения языка"!!!
Но переписывать 3 страници неохото
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.08.2010, 18:19 #10
Цитато из Шилдта:

В программе можно объявить функцию с переменным колличеством параметров. В большинстве случаев это относится к функции printf(). Чтобы сообщить компилятору, что функция может быть вызвана с разным колличеством параметров, объявление ее параметров следует завершить многоточием. Например, прототип, приведенный ниже означает, что функция func() может иметь по меньшей мере 2 параметра и сколько угодно доп параметров, или не иметь их.

C++
1
int func(int a, int b, ...);
Этот способ объявления параметров используется и в определении функции.
Любая функция с переменным колличеством параметров должна иметь по меньшей мере один фактический параметр. Следующее объявление неверно.

C++
1
int func(...) //Неверно
Evg
Эксперт CАвтор FAQ
17622 / 5846 / 375
Регистрация: 30.03.2009
Сообщений: 16,123
Записей в блоге: 26
11.08.2010, 19:43 #11
Цитата Сообщение от Lavroff Посмотреть сообщение
Следующее объявление неверно
А в Си++ такое разрешено вроде бы как. g++ по крайней мере это ест
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.08.2010, 19:45 #12
Evg, Ну да. Это возможно) Просто это раздел Шилдта еще про Си)
Evg
Эксперт CАвтор FAQ
17622 / 5846 / 375
Регистрация: 30.03.2009
Сообщений: 16,123
Записей в блоге: 26
11.08.2010, 20:20 #13
Цитата Сообщение от Lavroff Посмотреть сообщение
Evg, Ну да. Это возможно) Просто это раздел Шилдта еще про Си)
Ну и вопрос на засыпку, а как этим в Си++ пользоваться? Имею в виду, когда ни одного именованного аргумента. У меня соображений нет
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.08.2010, 20:22 #14
Evg, Да я как-то пытался... Но что-то никак. Наверное потому что, я в этом не разбираюсь, и мне это особо пока не нужно.
А это вообще может использоваться? Может просто компиль нормально на это реагирует?
Evg
Эксперт CАвтор FAQ
17622 / 5846 / 375
Регистрация: 30.03.2009
Сообщений: 16,123
Записей в блоге: 26
11.08.2010, 20:27 #15
Цитата Сообщение от Lavroff Посмотреть сообщение
А это вообще может использоваться? Может просто компиль нормально на это реагирует?
Компилятор это ест (по крайней мере g++ и borland), так что скорее всего это из стандарта Си++. Как это может использоваться - не знаю. Хотелось бы узнать. Чтобы в очередной раз высказать "фи" в сторону Си++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2010, 20:27
Привет! Вот еще темы с ответами:

Как изменить значение переменной, переданной в списке с переменным числом аргументов - C++
Помогите!!! Начал изучать С++ Возникла такая проблема. Когда мне нужно получить доступ к переменному числу аргументов я делаю что-то...

Шаблон функции с переменным количеством аргументов - C++
Добрый вечер, мне необходимо при помощи шаблона функции реализовать поиск минимального числа(тип данных не известен, количество чисел...

Функции с переменным числом параметров - C++
#include <iostream.h> #include <conio.h> int max(int k,...) { int *p=&k; int maxi; for(;k!=0;k--)

Функции с переменным числом параметров - C++
Написать функцию prost с переменным числом параметров, которая находит все простые числа из нескольких интервалов. Интервалы задаются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.08.2010, 20:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru