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& operator<<(ostream&, Pair<T,U>&);<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& operator<< <> (ostream&, Pair<T,U>&);</code>
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!