C++ Komplexe Zahlen Klasse
-
Fehlt vielleicht ein Include <sstream>?
-
asc schrieb:
Fehlt vielleicht ein Include <sstream>?
ja hat gefehlt! Mein Chef setzt sich auch gerade damit auseinander, versteht aber auch nicht warum es dann heißt
1>f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(42) : error C2804: Binärer Operator '<<' hat zu viele Parameter 1>f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(42) : error C2333: 'Complex::operator <<': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen 1>f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\main.cpp(14) : error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'Complex' akzeptiert (oder keine geeignete Konvertierung möglich) 1>Aktuell sieht die Headerfile jetzt so aus:
#include <sstream> class Complex { public: Complex(double r, double i) { m_real = r; m_imag = i; } ~Complex (){}; const std::string Complex::toStdString() const { std::ostringstream os; os << m_real << " + " << m_imag << "i"; if (m_real == 0) { os << m_imag << "i"; } if (m_imag == 0) { os << m_real; } if (m_imag < 0) { os << m_real << m_imag << "i"; } return os.str(); } std::ostream& operator << (std::ostream& os, const Complex &o) { return os << o.toStdString(); } Complex operator + (const Complex &o) { return Complex(o.m_real + m_real, o.m_imag + m_imag); } Complex operator - (const Complex &o) { return Complex(o.m_real - m_real, o.m_imag - m_imag); } Complex operator * (const Complex &o) { return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real)); } Complex operator / (const Complex &o) { return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)), ((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag))); } private: double m_real, m_imag; //protected: };
-
Dein operator<< ist immer noch ein Member und keine freie Funktion
-
Dein operator<< ist keine freie Funktion! Wurde eigentlich oft genug erwähnt dass das falsch ist. Ich hatte auch gehofft ich hätte erklärt, warum diese Fehlermeldung auftritt.
-
daddy_felix schrieb:
Dein operator<< ist immer noch ein Member und keine freie Funktion
:DD ahh danke euch allen!
habe es jetzt als freie Funktion geschrieben.. und jetzt funktioniert es!
Ich kann dieses Forum nur an alle weiter empfehlen!
Liebe Grüße
-
Was genau macht deiner Meinung nach eigentlich Zeile 11?
-
@SeppJ: mein Chef meinte ich sollte noch einen Destruktor reinschreiben.. also habe ich das gemacht.. Dient zur Freigebung benutzter Ressourcen

-
wenn der destruktor leer ist, kannst du ihn auch gleich weg lassen, da der compiler dann einen für dich erzeugt.
-
danke
wie schon gesagt, bin bei den Anfängen
-
scanbot90 schrieb:
@SeppJ: mein Chef meinte ich sollte noch einen Destruktor reinschreiben..
Wenn du keinen eigenen Destruktor schreibst, wird automatisch ein Leerer erzeugt.
Sprich: Du machst nichts anderes, als du bekommen würdest, wenn du ihn unnötigerweise selbst leer implementierst.
scanbot90 schrieb:
Dient zur Freigebung benutzter Ressourcen

Schön aus dem Lehrbuch rezitiert, aber unsinnig, wenn du keine Aufräumarbeiten durchführst.