Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat C++: Memanggil operasi anak panah kepada ahli kelas bukan penuding tidak dibenarkan Bagaimana untuk menyelesaikannya?

Ralat C++: Memanggil operasi anak panah kepada ahli kelas bukan penuding tidak dibenarkan Bagaimana untuk menyelesaikannya?

WBOY
WBOYasal
2023-08-21 21:41:051151semak imbas

C++ ialah bahasa pengaturcaraan berorientasikan objek, kuasanya ialah paradigma pengaturcaraan berorientasikan objek boleh membantu pembangun merangkum, mewarisi, polimorfisme dan fungsi lain serta meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Walau bagaimanapun, dalam pembangunan harian, kita pasti akan menghadapi pelbagai ralat dan pengecualian, dan menangani masalah ini adalah kerja harian pengaturcara. Antaranya, bagaimana untuk menyelesaikan masalah "memanggil operasi anak panah kepada ahli kelas bukan penunjuk tidak dibenarkan"?

Pertama sekali, mari kita fahami maksud ralat ini: Dalam C++, pengendali anak panah (->) digunakan untuk mengakses fungsi ahli atau pembolehubah ahli dalam struktur atau penunjuk kelas. Dalam sesetengah kes, ralat ini berlaku jika pengendali anak panah digunakan untuk mengakses ahli jenis bukan penuding. Sebagai contoh, kod berikut mungkin menyebabkan ralat ini:

class person{
public:
    void print(){
        cout<<"name:"<<name<<endl;
        cout<<"age:"<<age<<endl;
    }
private:
    string name;
    int age;
};
int main(){
    person p;
    p->print();
    return 0;
}

Dalam kod di atas, kami mentakrifkan kelas bernama orang, yang mempunyai fungsi cetakan untuk mencetak ahli objek, dan menjadikan orang dalam fungsi utama Objek p, dan gunakan operator anak panah untuk mengakses fungsi cetakan. Walau bagaimanapun, apabila kami cuba menyusun dan menjalankan, kami menerima mesej ralat "Panggilan ke operasi anak panah pada ahli kelas bukan penunjuk tidak dibenarkan".

Seterusnya, kita perlu mencari penyelesaian untuk masalah ini. Punca paling biasa ralat ini ialah cuba menggunakan pengendali anak panah pada jenis bukan penuding. Penyelesaiannya mudah, kita hanya perlu menggantikan pengendali anak panah (->) dengan pengendali titik (.):

int main(){
    person p;
    p.print();
    return 0;
}

Pada masa ini, apabila kita menyusun dan menjalankan kod semula, kita akan mendapati bahawa ralat telah hilang dan program Ia juga boleh dilaksanakan seperti biasa.

Selain kaedah di atas, terdapat cara yang lebih baik untuk menggunakan penunjuk. Dalam C++, penunjuk ialah jenis data yang sangat biasa yang boleh menunjuk ke objek kelas untuk mengakses ahli kelas. Menggunakan penunjuk bukan sahaja boleh mengelakkan masalah di atas, tetapi juga membenarkan manipulasi objek yang lebih fleksibel. Sebagai contoh, kita boleh mengubah suai kod di atas seperti ini:

int main(){
    person *p = new person;
    p->print();
    delete p;
    return 0;
}

Dalam versi kod ini, kita menggunakan penuding p menunjuk ke kelas orang untuk mengakses fungsi cetakan. Dengan cara ini, kami boleh membuat dan memusnahkan objek secara fleksibel dan mengelakkan ralat yang disebabkan oleh isu seumur hidup objek.

Ringkasnya, untuk ralat "memanggil operasi anak panah kepada ahli kelas bukan penunjuk adalah tidak dibenarkan", kita boleh menyelesaikannya dengan menggantikan operator atau menggunakan penunjuk. Masalah ini mungkin kelihatan kecil, tetapi ia mengingatkan kita untuk lebih berhati-hati semasa menulis kod dan mengikuti spesifikasi bahasa apabila menggunakan ciri C++ untuk mengelakkan masalah dan ralat yang tidak perlu.

Atas ialah kandungan terperinci Ralat C++: Memanggil operasi anak panah kepada ahli kelas bukan penuding tidak dibenarkan Bagaimana untuk menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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