Sie müssen die ostream durch Verweis, nicht Wert zurückgeben. Es versucht, einen Konstruktor aufzurufen. Könnte auch 'a' als Referenz übergeben:
%Vor% Ich bemerke auch, dass die Druckmethode wahrscheinlich falsch ist. Es hat sout
als Name des Streams übergeben, wird dann aber direkt mit cout
implementiert. Es sollte
Streams können nicht kopiert werden. Sie können also keinen Wert zurückgeben. Sie müssen den Stream als Referenz zurückgeben ( std::ostream&
).
Sie sollten wahrscheinlich auch in sout
in Ihrer CRational::print(ostream&)
-Funktion ausgeben (sonst, warum sollten Sie es als Argument nehmen?) und Sie sollten sout
wahrscheinlich weitergeben, wenn Sie a.print()
in Ihrem% co_de aufrufen % overload (sonst macht die Überladung nicht wirklich das, was eine idiomatische operator<<
Überladung für einen Stream tun soll).
operator<<
sollte einen Verweis auf ein ostream
: ostream& operator<<
...
Auch deine Funktionen sind irgendwie durcheinander. Anstatt cout
zu verwenden, sollten Sie das übergebene ostream
verwenden, das Sie sout
genannt haben.
Tags und Links c++