Пусть у меня есть такой код:Задание параметров по умолчанию при вызове C++ функции
void f(int a = 0, int b = 0, int c = 0)
{
//...Some Code...
}
Как вы, очевидно, см.выше с моим кодом, параметры a
, b
и c
имеют по умолчанию значения параметров 0. Теперь взгляните на моей основной функции ниже:
int main()
{
//Here are 4 ways of calling the above function:
int a = 2;
int b = 3;
int c = -1;
f(a, b, c);
f(a, b);
f(a);
f();
//note the above parameters could be changed for the other variables
//as well.
}
Теперь я знаю, что я не могу просто пропустить параметр, и пусть он имеет значение по умолчанию, так как это значение будет оценивать в качестве параметра в этом положении. Я имею в виду, что я не могу, скажем, позвонить, f(a,c)
, потому что, c
будет оцениваться как b
, чего я не хочу, особенно если c
- неправильный тип. Есть ли способ, которым вызывающая функция должна указывать в C++, использовать любое значение параметра по умолчанию для функции в любой заданной позиции, не ограничиваясь обратным обращением от последнего параметра к none? Есть ли зарезервированное ключевое слово для достижения этого или, по крайней мере, обход? Пример, который я могу дать бы, как:
f(a, def, c) //Where def would mean default.
Вы можете посмотреть на именованных параметрах. Есть несколько трюков, чтобы иметь эту функцию в C++ как BOOST_PARAMETER_FUNCTION, а затем указать, какой параметр вы даете. – Jarod42
Если вам кажется, что вам нужно это сделать, у вас может быть недостаток дизайна. Я бы предложил вам переоценить его. –
@RobK Это был просто вопрос любопытства. –