Heim > Backend-Entwicklung > C++ > Hauptteil

Wie überlade ich den spitzen Klammeroperator für eine Vorlagenklasse richtig?

Linda Hamilton
Freigeben: 2024-11-01 15:29:02
Original
459 Leute haben es durchsucht

How to Properly Overload the Angle Bracket Operator for a Template Class?

Überladung des spitzen Klammeroperators für eine Vorlagenklasse

Es wird versucht, den Operator << zu überladen. Wenn Sie den Operator als Freund für ein Vorlagenklassenpaar verwenden, wird möglicherweise eine Compilerwarnung angezeigt, die auf eine Funktionsdeklaration hinweist, die keine Vorlage ist. Dieses Problem entsteht aufgrund einer Diskrepanz zwischen der Friend-Deklaration und der tatsächlichen Funktionsdefinition.

Um dieses Problem zu beheben, muss angegeben werden, dass die Friend-Deklaration für eine spezielle Instanz der Vorlagenklasse Pair mit bestimmten Vorlagenargumenten gilt. Dies wird durch die Verwendung leerer spitzer Klammern <> erreicht. nach der Operator-Deklaration in der Friend-Deklaration.

Der korrigierte Code sieht so aus:

<code class="cpp">template <class T, class U>
class Pair {
public:
    Pair(T v1, U v2) : val1(v1), val2(v2) {}
    ~Pair() {}
    Pair& operator=(const Pair&);
    friend ostream& operator<<<> (ostream&, Pair<T, U>&);

private:
    T val1;
    U val2;
};</code>
Nach dem Login kopieren

Zusätzlich muss die Funktionsdefinition für den überladenen Operator vor der Template-Klassendefinition deklariert werden, as folgt:

<code class="cpp">template <class T, class U>
ostream& operator<<<> (ostream& out, Pair<T, U>& v);

template <class T, class U>
class Pair {
    // ...
};</code>
Nach dem Login kopieren

Durch diese Änderungen kann der Compiler die Friend-Funktion korrekt als Spezialisierung für die Pair-Vorlage identifizieren und die Warnung bezüglich einer Nicht-Vorlagen-Funktionsdeklaration vermeiden.

Das obige ist der detaillierte Inhalt vonWie überlade ich den spitzen Klammeroperator für eine Vorlagenklasse richtig?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!