Überladener Operator + funktioniert nicht. Seltsam
-
Hallo Forumsgemeinde,
ich hätte da ein Programmierproblem. Mein C++ Compiler akzeptiert bei befreundeten Funktionen keine übrladenen Operatoren.
Wer kann helfen?class Komplex { //An dieser Stelle meckert der Compiler. // Wenn ich operator+ durch z.B. meineFunktion ersetze gibts // keine Fehlermeldung. friend Komplex operator+ (const Komplex zahl1, const Komplex zahl2); private: long double re; long double im; public: // Konstruktor Komplex(long double re, long double im); // Ausgabe ausgabe(); // Konjugiert die komplexe Zahl konjug(); // Den Betrag der komplexen Zahl ausgeben long double betrag(); // Gibt den Winkel aus float winkel(); // + Komplex* operator+(Komplex EINS); // Destruktor ~Komplex(void); }; Komplex operator+ (const Komplex zahl1, const Komplex zahl2) { }
Hier die Fehlermeldung:
Kompilierung läuft...
main.cpp
c:\dokumente und einstellungen\jfk\desktop\vers 1\komplex.h(4) : fatal error C1001: INTERNER COMPILER- FEHLER
(Compiler-Datei "msc1.cpp", Zeile 1786)
Bitte wählen Sie im Menü "?" von Visual C++
den Befehl "Software Service", oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten
Fehler beim Ausführen von cl.exe.main.obj - 1 Fehler, 0 Warnung(en)
-
NACHTRAG!!!!!!!
// + Komplex* operator+(Komplex EINS);
Diese Zeile kann natürlich rausgenommen werden, aber der Fehler tritt dennoch auf
-
Hallo,
installier mal das Service Pack 5 (für das Visual Studio). Dann sollte dein Problem verschwinden.Der Code ist korrekt, wenn auch nicht schön. Den operator+ solltest du lieber über den operator+= implementieren. Damit ersparst du dir nicht nur arbeit sondern auch das friend. Gleichzeitig gibt es für Benutzer deiner Klasse weniger Überraschungen.
-
Vielen Dank jetzt funktioniert alles einwandfrei!
Das mit dem operator += ist auch eine gute Idee.
Danke.