Heim > Backend-Entwicklung > C++ > So überlasten Sie den Freund-Operator

So überlasten Sie den Freund-Operator

DDD
Freigeben: 2024-11-01 02:59:27
Original
587 Leute haben es durchsucht

How to Overload Friend Operator `

Freundbetreiber überladen << für Template-Klasse

Beim Versuch, die << Wenn Sie den Operator als Freund einer Vorlagenklasse verwenden, wird möglicherweise eine Compilerwarnung angezeigt, die darauf hinweist, dass er eine Nicht-Vorlagenfunktion deklariert. Um dieses Problem zu beheben, ist es notwendig, die Vorlagenfunktion vor der Friend-Deklaration korrekt zu deklarieren.

Im bereitgestellten Code ist die Friend-Deklaration für das << Operator ist:

<code class="cpp">friend ostream&amp; operator<<(ostream&amp;, Pair<T,U>&amp;);<p>Der Compiler empfiehlt jedoch das Hinzufügen von <> Klammern an den Funktionsnamen an, was darauf hinweist, dass die Funktion als Vorlagenfunktion deklariert werden soll. Die korrekte Syntax lautet:</p>
<pre class="brush:php;toolbar:false"><code class="cpp">friend ostream&amp; operator<< <> (ostream&amp;, Pair<T,U>&amp;);</code>
Nach dem Login kopieren

Dies deklariert das << Operator als Freund der Template-Klasse Pair und gibt an, dass es sich um eine Template-Funktion mit generischen Parametern T und U handelt.

Denken Sie daran, dass die Template-Funktionsdeklaration auch vor der Template-Definition der Pair-Klasse platziert werden sollte, um sicherzustellen, dass die Der Compiler kennt die Vorlagenfunktion beim Parsen der Friend-Deklaration. Der korrigierte Code mit der richtigen Friend-Deklaration und Template-Funktionsdeklaration:

template  class Pair;

template 
ostream& operator<< <> (ostream&, Pair&);

// Pair template class definition...

Das obige ist der detaillierte Inhalt vonSo überlasten Sie den Freund-Operator. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage