Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
young_snake
6 / 6 / 2
Регистрация: 26.12.2011
Сообщений: 263
#1

Передача неизвестного количества аргументов в функцию, как реализовать? - C++

30.06.2015, 09:34. Просмотров 716. Ответов 5
Метки нет (Все метки)

Вот есть функция и в нее будут передаваться какие-то аргументы, причем заранее не известен их тип и количество (там уже в зависимости от типа нужно будет выполнять какие-то нибудь действия). В этом и вопрос, я не совсем догоняю как это реализовать. Как написать функцию, где количество аргументов заранее не известно и как узнать тип данных каждого аргумента? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 09:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача неизвестного количества аргументов в функцию, как реализовать? (C++):

Передача аргументов в функцию - C++
Доброго всем дня! Я немного не понял листинг программы из учебника Р.Лафоре: #include"stdafx.h" #include<iostream> ...

Передача аргументов в функцию - C++
Что сработает быстрее? void Func(const A &a = A(0, 0, 0)) { } или void Func(A a = A(0, 0, 0))

Передача аргументов в функцию - C++
При сборке кода выдает ошибку (её я написал в комментарий). Что значит ошибка? #include <iostream> #include <math.h> using...

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

Передача аргументов в функцию - C++
как передать аргумент в функцию по указателю? нашел только по значению: int sqr(int x); int main() { int t=10; ...

Передача аргументов в функцию и возврат значения - C++
Зачем нужны аргументы функции? Что делает return, если задать ненулевое значение? Как из main() перенести переменную в другую...

5
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 09:41 #2
variadic templates в помощь
0
young_snake
6 / 6 / 2
Регистрация: 26.12.2011
Сообщений: 263
30.06.2015, 09:44  [ТС] #3
А как такие задачи в Си решались?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 09:47 #4
Цитата Сообщение от young_snake Посмотреть сообщение
А как такие задачи в Си решались?
Функции с неопределенным количеством параметров
1
Max Dark
шКодер самоучка
1851 / 1651 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
30.06.2015, 10:40 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <typeinfo>
 
// пачка шаблонов для выбора действия по типу аргумента
// нужно создать по 1й функции для всех обрабатываемых типов
// это работает аля switch-case-default по типу аргумента
template<typename Arg>
void do_smth(Arg a) {
    std::cout << "typeinfo of a: " << typeid(a).name() << std::endl;
}
 
// функция для типа int
template<>
void do_smth<int>(int a) {
    std::cout << "it is int = " << a << std::endl;
}
 
// спец шаблон для обработки одиночного элемента
// нужен для прекращения рекурсии в обобщенном шаблоне
template<typename Arg>
void do_it(Arg a) {
    do_smth(a);
}
 
// функция с переменным числом параметров
template<typename Arg, typename... Args>
void do_it(Arg arg, Args... args) {
    do_smth(arg); // обрабатываем 1й аргумент
    do_it(args...); // переходим к следующему аргументу
}
 
 
int main() {
    do_it(1, 2, 3, 3.14, "test");
    return 0;
}
запустить код
https://ru.wikipedia.org/wiki/C++11
2
young_snake
6 / 6 / 2
Регистрация: 26.12.2011
Сообщений: 263
30.06.2015, 11:59  [ТС] #6
Спасибо за пример!
0
30.06.2015, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2015, 11:59
Привет! Вот еще темы с ответами:

Передача аргументов в функцию по ссылке и указателю - C++
Чем отличается передача по ссылке от передачи по указателю аргументов в функцию?

Передача аргументов в функцию динамической библиотеки - C++
И снова здравствуйте. Я пытаюсь написать универсальный класс, который позволит мне обращаться к любым функциям динамических билиотек. ...

Множество аргументов неизвестного типа, аналог printf() - C++
Я должен создать функцию, которая принимает неизвестное заранее количество аргументов, наподобии printf(). Как мне их объявить и как потом...

создание ф-ии с плавающим кол-вом аргументов неизвестного типа. (С / С++) - C++
Как создать такую? Иными словами, интересует принцип работы (в плане приема аргументов) ф-ии printf (); Ведь в нее можно передавать любое...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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