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

Mengapa Kelas Matriks Saya `

Patricia Arquette
Lepaskan: 2024-12-18 08:43:14
asal
932 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!

sumber:php.cn
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