Функция с переменным количеством входных параметров?
- Войдите на сайт для отправки комментариев
Есть некая функция, которая используется во многих местах и нормально работает.
Пусть для примера:
void func(int Param1, int Param2) { ... }
Но есть потребность ввести в эту функцию усовершенствование - обработку еще одного параметра (для всех мест, где функция используется - можно оставить как есть).
Как написать функцию, которая бы объявлялась так же, но с большим количеством параметров (пусть будет 3 параметра вместо двух),.. и если вызов фукнции осуществляется "по-старому" (с 2 параметрами) - то значение третьего параметра бы как-то внутри функции определялось (пусть "нулем" будет)?
Понятно, что можно написать другую фукнцию, но как-то этот подход не очень нравится.
Можно пробежаться по всему коду и там, где есть вызов функции - дополнить еще одним параметром, но этот вариант тоже как-то не по душе.
void func( int param1, int param2, int param3 = 0 )
это описание функции. Третий параметр, если не указан будет равен 0
Вот и я так предполагал. Но не работает:
Компилятор ругается, что функция func не определена. Но ведь как-то же это делается...
Функция ДОЛЖНА быть описана ДО её вызова. Понятно, что ругается.
Всё получится ;)
Еще вариант, может где пригодится:
Т.е. Вы сначала объявляете функцию (какие у неё параметры и что она возвращает, тогда компилятор знает заранее, как вызывать эту функцию. А уж потом где нибудь, само тело функции, но в нем уже нельзя указывать int param3 = 25, компилятору не понравится.
Спасибо :) понял.
Ну, уж если извращаться, так до конца.
Попробуйте еще вот такой вариант (функция с неограниченным числом параметров):
Ого, как интересно :) Спасибо! Очень полезные знания.