Załóżmy, że mam kod jak poniżej:Określanie domyślnego parametru podczas wywoływania C++ funkcji
void f(int a = 0, int b = 0, int c = 0)
{
//...Some Code...
}
Jak można wyraźnie zobaczyć powyżej, z mojego kodu, parametry a
, b
, a c
mają domyślne wartości parametrów 0. Teraz spójrz na moją główną funkcją poniżej:
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.
}
teraz wiem, że nie można po prostu pominąć parametr, i niech on mieć wartość domyślną, ponieważ ta wartość będzie oceniać jako parametr w tej pozycji. Mam na myśli to, że nie mogę, powiedzmy, zadzwonić, f(a,c)
, ponieważ, c
byłby oceniany jako b
, czego nie chcę, zwłaszcza jeśli c
jest niewłaściwym typem. Czy istnieje sposób, aby funkcja wywołująca określiła w C++, aby użyć jakiejkolwiek domyślnej wartości parametru dla funkcji w danej pozycji, bez ograniczania się do cofania od ostatniego parametru do żadnego? Czy istnieje jakieś zastrzeżone słowo kluczowe, aby to osiągnąć, lub przynajmniej obejść? Przykładem może dam byłoby jak:
f(a, def, c) //Where def would mean default.
Można spojrzeć na wymienionych parametrów. Istnieje kilka sztuczek, które mają tę funkcję w C++ jako BOOST_PARAMETER_FUNCTION, a następnie określ, który parametr dajesz. – Jarod42
Jeśli wydaje ci się, że musisz to zrobić, możesz mieć wadę projektową. Sugeruję, żebyś to ponownie ocenił. –
@RobK To była tylko kwestia ciekawości. –