Überlastung << operator für std::ostream
ostream& operator <<(ostream& osObject, const storageRentals& rentals)
{
osObject << rentals.summaryReport();
return osObject;
}
summaryReport()
ist eine void-Funktion, und es gibt mir eine Fehlermeldung:
kein operator "<<" entspricht diesen Operanden
aber der Fehler ist nicht da, wenn ich die summaryReport
- Funktion zu einem int
, aber ich habe das problem, das Sie haben, um einen Wert zurückzugeben, und es ist Druck auf dem Bildschirm.
void storageRentals::summaryReport() const
{
for (int count = 0; count < 8; count++)
cout << "Unit: " << count + 1 << " " << stoUnits[count] << endl;
}
Gibt es eine Möglichkeit, um eine überlastung cout <<
mit einer void-Funktion?
InformationsquelleAutor Nick | 2012-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie definieren
summartReport
unterostream&
als parameter, wie hier gezeigt:dann nennen, wie:
Übrigens, es heißt nicht umsonst "überladen cout". Sie sollten sagen, "überlastung
operator<<
fürstd::ostream
.InformationsquelleAutor Nawaz
Wenn Sie überlastung
cout
hat, darf eine andere Stelle mitcode
schwer zu verstehen, oder eher verwirrend. In der Tat, Sie machen Ihre eigene Klasse um die Arbeit zu vollenden. z.B. eine Klasseclass MyPring
, überlast und seineoperator <<
.InformationsquelleAutor wedgwood
Ihre storage-Bericht implizit immer strömten nach cout.
Stell dir vor, jemand ruft Sie Ihre Funktion auf diese Weise und mit den Vermietungen an cout anstelle der Datei.
Warum gehst du nicht streamen Sie Ihre Klasse wie folgt aus:
Wenn die stoUnits Mitglied ist privat, Sie brauchen, um die stream-Funktion, ein Freund von Ihrem storage-Klasse.
InformationsquelleAutor David Feurle
Gibt es zwei Dinge, die Sie brauchen, um hier zu tun. Machen
storageRentals::summaryReport()
nehmenstd::ostream&
(Sie können Standard diesstd::cout
):Dann nennen Sie es so:
Hinweis: Ein Vorteil, dass
storageRentals::summaryReport()
nehmenstd::ostream&
ist, dass Sie können geben Sie einenstd::ostringstream
in Ihrer unit-tests und behaupten, dass es die korrekte Ausgabe.InformationsquelleAutor Johnsyweb