Vorgegebene Argumente (3/3)

Falls man auch den mittleren Parameter weglassen können sollte ohne dabei auf den letzten zu verzichten, also einen Aufruf wie folgenden machen möchte:

  meinTest("datei4.dat",binomial);        // Fehler (Signifikanz fehlt)

dann kann man dies nur durch ein zusätzliches Überladen der Funktion erreichen:

  bool meinTest(string dateiname, distribution vert)
  {
    return bool(dateiname, 0.95, vert);
  }

Dies funktioniert natürlich nur, wenn die Typen der Parameter verschieden sind, da sonst der Compiler nicht entscheiden könnte, welche Variante er nehmen sollte. Dazu noch zwei einfache Negativbeispiele:

 int meineFunktion(float a, int b=5, int c=7);
 int meineFunktion(float a, int c);      //Fehler - deckt sich mit meineFunktion(float, int, 7)
 int meineFunktion(float a);             //Fehler - deckt sich mit meineFunktion(float, 5, 7)