Operator Rakan Melebihi << untuk Kelas Templat
Apabila cuba membebankan << operator sebagai rakan kepada kelas templat, anda mungkin menghadapi amaran pengkompil yang menunjukkan bahawa ia mengisytiharkan fungsi bukan templat. Untuk menyelesaikan isu ini, adalah perlu untuk mengisytiharkan fungsi templat dengan betul sebelum pengisytiharan rakan.
Dalam kod yang disediakan, pengisytiharan rakan untuk << pengendali ialah:
<code class="cpp">friend ostream& operator<<(ostream&, Pair<T,U>&);<p>Walau bagaimanapun, pengkompil mengesyorkan menambah <> kurungan pada nama fungsi, menunjukkan bahawa ia harus diisytiharkan sebagai fungsi templat. Sintaks yang betul ialah:</p> <pre class="brush:php;toolbar:false"><code class="cpp">friend ostream& operator<< <> (ostream&, Pair<T,U>&);</code>
Ini mengisytiharkan << operator sebagai rakan kelas templat Pair dan menentukan bahawa ia adalah fungsi templat dengan parameter generik T dan U.
Ingat, pengisytiharan fungsi templat juga harus diletakkan sebelum definisi templat kelas Pair untuk memastikan bahawa pengkompil mengetahui fungsi templat apabila menghuraikan perisytiharan rakan. Kod yang diperbetulkan dengan pengisytiharan rakan yang betul dan pengisytiharan fungsi templat:
template class Pair;
template
ostream& operator<< <> (ostream&, Pair&);
// Pair template class definition...Atas ialah kandungan terperinci Bagaimana untuk membebankan Operator Rakan `. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!