Heim > Backend-Entwicklung > C++ > Warum funktioniert meine Matrix-Klasse?

Warum funktioniert meine Matrix-Klasse?

Patricia Arquette
Freigeben: 2024-12-18 08:43:14
Original
992 Leute haben es durchsucht

Why Does My Matrix Class's `

Mehrdeutige Überladung von << Operator für ostream

Der Fehler trat beim Versuch auf, den <<-Operator zu überladen. Der Operator für eine Matrix-Klasse ergibt sich aus der Anforderung, dass die Operatorfunktion genau ein Argument annehmen muss. In diesem Fall ist der Fehler wahrscheinlich auf den folgenden Code zurückzuführen:

std::ostream&amp; Matrix::operator <<(std::ostream&amp; stream, const Matrix&amp; matrix) {

    [...]

}
Nach dem Login kopieren

Da der Operator<< Wenn die Funktion als Mitgliedsfunktion der Matrix-Klasse definiert ist, akzeptiert sie implizit das Matrix-Objekt als Argument. Daher benötigt die Funktion tatsächlich zwei Argumente: das ostream-Objekt und das Matrix-Objekt.

Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:

  1. Verwenden Sie eine Friend-Funktion: Eine Friend-Funktion ist kein Mitglied der Klasse, hat aber Zugriff auf ihre privaten und geschützten Mitglieder. Durch die Definition des Operators << Wenn Sie als Friend-Funktion fungieren, können Sie das implizite Matrix-Objektargument vermeiden.

    friend std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) {
        [...]
    }
    Nach dem Login kopieren
  2. Übergeben Sie das Matrix-Objekt als Referenz: Durch Übergabe des Matrix-Objekts als Wenn Sie eine Referenz angeben, können Sie das implizite Matrix-Objektargument vermeiden.

    std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) const {
        [...]
    }
    Nach dem Login kopieren

Beachten Sie, dass die zweite Option das erfordert Operator<< Funktion muss als const deklariert werden, da sie das Matrix-Objekt nicht ändert.

Das obige ist der detaillierte Inhalt vonWarum funktioniert meine Matrix-Klasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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