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

Warum führt eine Überladung dazu?

Linda Hamilton
Freigeben: 2024-12-27 00:00:13
Original
960 Leute haben es durchsucht

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) {
            [...]
        }
    };
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage