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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 09:41     Передача неизвестного количества аргументов в функцию, как реализовать? #2
variadic templates в помощь
young_snake
6 / 6 / 2
Регистрация: 26.12.2011
Сообщений: 263
30.06.2015, 09:44  [ТС]     Передача неизвестного количества аргументов в функцию, как реализовать? #3
А как такие задачи в Си решались?
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 09:47     Передача неизвестного количества аргументов в функцию, как реализовать? #4
Цитата Сообщение от young_snake Посмотреть сообщение
А как такие задачи в Си решались?
Функции с неопределенным количеством параметров
Max Dark
шКодер самоучка
1813 / 1614 / 588
Регистрация: 09.10.2013
Сообщений: 3,618
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2015, 11:59     Передача неизвестного количества аргументов в функцию, как реализовать?
Еще ссылки по теме:

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

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

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

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

Как передать в функцию указатель на двумерный массив заранее неизвестного размера? - C++
Ребята, скажите пожалуйста, как реализовать такую идею? Необходимо передать в функцию двумерный массив, чтобы она изменала его элементы....

Реализовать функцию вычисления количества дней между двумя датами. - C++
Помогите пожалуйста реализовать функцию вычисления количества дней между двумя датами. мои наброски int d,m,y,r; ...


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

Или воспользуйтесь поиском по форуму:
young_snake
6 / 6 / 2
Регистрация: 26.12.2011
Сообщений: 263
30.06.2015, 11:59  [ТС]     Передача неизвестного количества аргументов в функцию, как реализовать? #6
Спасибо за пример!
Yandex
Объявления
30.06.2015, 11:59     Передача неизвестного количества аргументов в функцию, как реализовать?
Ответ Создать тему
Опции темы

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