Heim >Backend-Entwicklung >C++ >Warum führt eine Überladung dazu?

Warum führt eine Überladung dazu?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 00:00:13862Durchsuche

Why Does Overloading the

Ü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&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn