Heim >Backend-Entwicklung >C++ >Warum führt eine Überladung dazu?
Überladen des '<<' Operator für einen Ostream
Beim Versuch, das '<<' zu überladen Operator für einen ostream in C verwenden, kann die Fehlermeldung „Fehler: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' muss genau ein Argument annehmen“ auftreten. Das kann verwirrend sein, daher finden Sie hier eine ausführliche Erklärung des Problems und eine Lösung.
Die Überladung des Operators ist definiert als „std::ostream& Operator<<“ (std::ostream& stream, const Matrix& matrix)'. Wie Sie sehen, benötigt diese Funktion zwei Argumente. Die Fehlermeldung besagt jedoch, dass es nur eines geben sollte. Dies liegt daran, dass standardmäßig „<<“ Der Operator ist eine Mitgliedsfunktion der Klasse, in die gestreamt wird. Daher ist das erste Argument implizit das gestreamte Objekt. Wenn Sie diesen Operator überladen, müssen Sie das erste Argument explizit als „ostream&“ angeben.
Die Lösung besteht darin, „void“ als erstes Argument der Überladung hinzuzufügen. Dies weist darauf hin, dass der Operator eine Friend-Funktion und keine Mitgliedsfunktion ist.
Hier ist der korrigierte Code:
namespace Math { class Matrix { public: friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix) { [...] } }; }
Das obige ist der detaillierte Inhalt vonWarum führt eine Überladung dazu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!