@IliaNeverov

Как сделать так чтобы функция принимала неограниченное число аргументов разного типа?

Как сделать так чтобы функция принимала неограниченное число аргументов разного типа?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
В C++ гораздо сложнее написать функцию, которая принимала бы переменное количество аргументов одного типа, чем разных типов.
Задача решается с помощью т.н. вариативных параметров шаблона [?].

template< typename... TArguments >
void Foo( const TArguments&... arguments )
{
	static_assert( sizeof...( TArguments ) > 0, "This function shall not be called without arguments." );
}


При работе с переменным числом параметров шаблона, в виду его синтаксиса, особенно необходимо учитывать и функциональность идеальной передачи [?], и правило схлопывания ссылок [?].
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@kaka888
Lua, C++ разработчик
Неограниченное число аргументов - можно просто единственным аргументом принимать указатель на начало списка, например. А список может быть любой длины.
Для того, чтобы функция работала с разными входными данными, используйте шаблоны (шаблоны функций): Википедия
Ответ написан
15432
@15432
Системный программист ^_^
По типу сишного printf() можно, через va_list, va_start
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы