Klassen - Constructor overload



  • #include <iostream.h>
    #include <math.h>
    
    class komplex
    {
     private:
      float real, imag;
    
     public:
      komplex(float,float);
      komplex(float);
    
      void ausgabe(void);   
    };
    
    int main (void)
    {
     komplex z1(1.0,2.0);  
     z1.ausgabe();
    
     komplex z2(1.0);  
     z2.ausgabe();
    
     while(1);
    }
    
    void komplex::ausgabe(void)
    {
     cout <<" z = " << real << " + " << imag << "j";
    }
    

    Könnt Ihr mir sagen warum dieses Programm nicht läuft? Ich verzweifle hier so langsam! Liegt es an den #includes?

    Gruß juniorcrew



  • Hat sich schon erledigt! Ich habe den Fehler gefunden 🙂

    Gruß juniorcrew



  • juniorcrew schrieb:

    Hat sich schon erledigt! Ich habe den Fehler gefunden 🙂

    Hoffentlich hast du die Fehler gefunden, nicht nur einen.

    1. Seit dem C++ Standard von 1998 ist definiert, das die Header der Standardbibliothek ohne Dateiendung includiert werden, die C-Kompatibilitätsheader beginnen zudem mit "c". Alle Bestandteile der C++ Standardbibliothek liegen im Namensraum std.

    #include <iostream> // Nicht iostream.h
    #include <cmath>    // Nicht math.h - aber bislang verwendest du den Header eh nicht.
    
    ...
    
    void komplex::ausgabe()
    {
      std::cout <<" z = " << real << " + " << imag << "j";
    }
    

    2. Unter C++ ist es unüblich (aber auch nicht falsch) leere Parameterlisten mit void zu spezifizieren. Dies ist eigentlich ein C-Relikt (siehe hierzu auch die Methode komplex::ausgabe oberhalb).

    3. Die fehlenden Konstruktorendefinitionen hast du sicherlich gefunden (Vielleicht sollte man hier dich auch noch auf die "Initialisierungslisten" stoßen...).

    4. Warum lässt du dein Programm nie beenden? Da gibt es einige bessere Alternativen.


Anmelden zum Antworten