Rumah > pembangunan bahagian belakang > C++ > Mengapa Kelas Matriks Saya `

Mengapa Kelas Matriks Saya `

Patricia Arquette
Lepaskan: 2024-12-18 08:43:14
asal
1031 orang telah melayarinya

Why Does My Matrix Class's `

Pemuatan berlebihan yang tidak jelas bagi << Operator untuk ostream

Ralat yang dihadapi semasa cuba membebankan << operator untuk kelas Matrix berpunca daripada keperluan bahawa fungsi operator mesti mengambil tepat satu hujah. Dalam kes ini, ralat mungkin disebabkan oleh kod berikut:

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

    [...]

}
Salin selepas log masuk

Memandangkan operator<< fungsi ditakrifkan sebagai fungsi ahli kelas Matriks, ia secara tersirat mengambil objek Matriks sebagai hujah. Hasilnya, fungsi sebenarnya mengambil dua hujah: objek ostream dan objek Matrix.

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

  1. Gunakan fungsi rakan: Fungsi rakan bukan ahli kelas tetapi mempunyai akses kepada ahli peribadi dan dilindunginya. Dengan mentakrifkan operator<< berfungsi sebagai fungsi rakan, anda boleh mengelakkan hujah objek Matriks tersirat.

    friend std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) {
        [...]
    }
    Salin selepas log masuk
  2. Pass objek Matrix sebagai rujukan: Dengan menghantar objek Matrix sebagai rujukan, anda boleh mengelakkan objek Matriks tersirat hujah.

    std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) const {
        [...]
    }
    Salin selepas log masuk

Perhatikan bahawa pilihan kedua memerlukan pengendali<< fungsi untuk diisytiharkan sebagai const kerana ia tidak mengubah suai objek Matriks.

Atas ialah kandungan terperinci Mengapa Kelas Matriks Saya `. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan