Mam problem z opcjonalnego parametru funkcji w C++Przechodząc opcjonalny parametr przez odniesienie w C++
Co staram się zrobić to funkcję z opcjonalnym parametrem, który jest przekazywany przez odniesienie pisać, tak że mogę używaj go na dwa sposoby (1) i (2), ale na (2) nie obchodzi mnie, jaka jest wartość mFoobar
.
Próbowałem taki kod:
void foo(double &bar, double &foobar = NULL)
{
bar = 100;
foobar = 150;
}
int main()
{
double mBar(0),mFoobar(0);
foo(mBar,mFoobar); // (1)
cout << mBar << mFoobar;
mBar = 0;
mFoobar = 0;
foo(mBar); // (2)
cout << mBar << mFoobar;
return 0;
}
ale wywala na
void foo(double &bar, double &foobar = NULL)
z komunikatem:
error: default argument for 'double& foobar' has type 'int'
Czy to możliwe, aby go rozwiązać bez przeciążania funkcji?
Oczywiście, że nie - nawet jeśli * * mógłby przekazać odwołanie NULL, co myślisz, że stanie się to w funkcji, gdy spróbujesz przypisać jej wartość? –
Błąd kompilacji nie jest awarią. – kennytm
Twój kod nie "zawiesza się", jest wyświetlany błąd kompilacji. Awaria może wystąpić dopiero po całkowitym zbudowaniu programu i podjęciu próby jego uruchomienia. –