Leere Übergabe



  • Hallo

    #include<iostream>
    #include<string>
    using namespace std;
    
    // Funktionsprototyp        2. Parameter mit Vorgabewert:
    void PreisAnzeige(double Preis,
                      const string Waehrung = "Euro");
    
    // Hauptprogramm
    int main() {
         double a = 12.35;
         // zwei Aufrufe mit unterschiedlicher Parameterzahl :
         PreisAnzeige(a);   // Default-Parameter wird eingesetzt
         PreisAnzeige(50.00, "Dollar");
    /* Anstatt der 50.00 würde ich gerne nichts übergeben*/
    }
    
    // Funktionsimplementation
    void PreisAnzeige(double Preis, const string Waehrung) {
          cout << Preis << ' ' << Waehrung << endl;
    }
    

    Ich habe hier eine Funktion in der ich beim zweiten Aufruf den ersten Aktualparameter nicht mitgeben möchte. Beim ersten Aufruf kann ich ja den zweiten Parameter weglassen, doch wie mache ich das beim ersten Parameter 😕
    Ich habe probiert
    '' (char) ' ' (char Leer) "" (string) " " (string Leer) und einfach mal ein Leerzeichen, immer durch Komma abgetrennt.
    Über den Sinn möchte ich hier nicht streiten, ich weiss nur nicht wie ich leere Parameter mitgeben kann. Wenn ich zb. den dritten (in anderem Code) oder so Parameter auch leerlassen will bekomme ich immer Fehlermeldungen.

    Thx for Help

    -----------------------
    DevC++ 4.9.9.0 beta mit MinGW 3.3.1



  • Was soll die Funktion PreisAnzeige denn tun, wenn Preis "leer" ist (abgesehen davon, dass ein double nicht "leer" sein kann).



  • geht nicht.
    kannst immer nur hinen defaultparameter machen, also
    foo(int a,int b=3,int c=5)
    und nicht vorne
    foo(int a=1,int b,int c=5)
    .
    also sobald ein defaultparameter da ist können alle folgenden auch nur defaultparameter sein.
    und kannst beim aufruf keine lücken lassen.
    also
    foo(11,,13) geht in c++ nicht.
    kannst immer nur die letzten parameter weglassen.
    also foo(11,12,13) oder foo(11,12) oder foo(11) oder gar foo(), wenn alles defaulrparameter sind.



  • Du könntest die Funktion überladen.

    void PreisAnzeige(const string Waehrung)
    {
         PreisAnzeigen(42, Waehrung);
    }
    


  • Na dann kann ich ja lange testen.
    Danke für die Antworten. 😃
    Das mit dem Überladen habe ich sowieso noch nicht so ganz verstanden, muß ich mir noch mal durchlesen. Das mit den Defaultparametern weiß ich ja jetzt.
    In diesem Sinne 🙂

    Ciao


Anmelden zum Antworten