Ralat C++: Tiada Beban Terlebih Berdaya maju '=':

Ralat C Tiada Beban Terlebih Berdaya Maju



Ralat ialah operasi yang mungkin hasil daripada kerja tidak normal mana-mana kod. Ralat tidak dapat dikesan pada masa penulisan sehingga kami telah melaksanakan kod atau ia disusun. Beberapa ralat melarang kod daripada melaksanakan sehingga ia dialih keluar. Hari ini, kita juga akan membincangkan ralat yang juga berlaku apabila program disusun, iaitu 'ralat: tiada padanan untuk 'operator =''. Ralat ini mungkin disebabkan oleh sebab seperti: jika kita telah melepasi penuding di mana rentetan akan dihantar, mengubah suai pembolehubah malar, dsb. Tidak sukar untuk mengalih keluar ralat 'tiada beban terlampau berdaya maju' tetapi tugas utama adalah untuk memahami ralat kerana ia hanya menunjukkan ralat tanpa sebarang penerangan tentang ralat.

Sintaks

Tiada sintaks pratakrif sedemikian untuk ralat ini kerana ia bukan sebahagian daripada kod atau output ia hanya kekaburan yang mungkin disebabkan oleh kod yang salah. Seperti yang kita dapat lihat, di bawah adalah contoh bagaimana ralat mungkin kelihatan seperti.







ralat : tidak setanding untuk ‘pengendali = '

Contoh # 01:

Marilah kita mempunyai idea tentang ralat ini dan kaedah untuk menyelesaikannya. Untuk memahaminya dengan lebih baik, kami akan melakukan contoh di mana kami akan menghantar nama menggunakan objek ke fungsi dan ia kemudiannya akan memaparkannya. Mula-mula kami akan memasukkan fail pengepala iostream. Selepas itu, kami akan mengisytiharkan kelas bernama 'objek_saya'. Di dalamnya, kami telah mengisytiharkan dua pembolehubah rentetan bernama 'F_name dan 'L_name', 'F_name' yang menunjukkan nama pertama orang di mana 'L_name' menunjukkan nama akhir orang itu.



Seterusnya, kami telah mengisytiharkan pembina awam bernama 'my_object()' di mana kami memberikan nilai nol kepada kedua-dua pembolehubah 'F_name' dan 'L_name'. Selepas itu, kami mengisytiharkan fungsi lain yang kami telah lulus pembolehubah jenis rentetan 'fn' dan 'ln'. Di dalamnya, kami memanggil kaedah name_set(). Kemudian, kami mengisytiharkan dua fungsi ahli 'show()' dan 'name_set()'. Apabila fungsi “show() dipanggil, ia akan memaparkan nama pertama dan nama akhir bersama-sama. Manakala, dalam fungsi ahli 'set_name()', kami melepasi dua pembolehubah rentetan jenis rentetan 'fn' dan 'ln' yang juga telah kami hantar kepada pembina kedua.



Sekarang, menggunakan operator tugasan salinan kelas my_object, kami mengambil satu parameter jenis 'my_object'. Pengkompil sentiasa mengisytiharkannya sebagai ahli awam sebaris bagi mana-mana kelas. Di dalam ahli ini, kami telah memberikan src.F_name kepada 'F_name' dan src.L_name kepada 'L_name' yang kami telah menyimpan salinan 'F_name' dan 'L_name'. Ini diserahkan kepada ahli kelas my_object. Sekarang, kami telah mengisytiharkan objek kelas my_cobject bernama 'name1' yang kami luluskan dua rentetan 'Anna' dan 'smith' sebagai hujah. Ini akan memanggil pembina dan memaparkan nama pertama bersama-sama dengan nama akhir.





Selepas itu, kami mencipta objek lain 'nama2' dan kemudian memberikan nama kepada objek itu secara berasingan. Selepas menghantar nilai kepada pembina untuk kedua-dua objek, kami memanggil kaedah show() yang kemudiannya akan memaparkan nama untuk kedua-dua objek 'nam1' dan 'name2'. Pada penghujung kod, kami mengembalikan nilai nol dan melaksanakan kod kami.

termasuk
kelas my_object {
persendirian :
std :: tali F_name, L_name ;
awam :
my_object ( ) { F_name = ' ' ; L_name = ' ' ; }
my_object ( std :: tali fn, std :: tali ln ) {
set_nama ( fn, ln ) ;
}
batal tunjuk ( ) { std :: cout << 'Namanya' << F_name << ' ' << L_name << '. \n ' ; }
batal set_nama ( std :: tali fn, std :: tali ln ) { F_name = fn ; L_name = ln ; }
my_object & pengendali = ( const my_object & src ) {
F_name = src. F_name ;
L_name = src. L_name ;
kembali * ini ;
}

} ;
int utama ( int argc, char ** argv ) {
nama objek_saya1 ( 'Anna' , 'smith' ) ;
nama_objek saya2 ;
nama2 = ( 'Anna' , 'smith' ) ;
nama1. tunjuk ( ) ;
nama2. tunjuk ( ) ;
kembali 0 ;
}

Selepas pelaksanaan kod kami, kami mempunyai ralat ini yang memaparkan bahawa kami telah menulis kod yang salah pada baris 24 yang menunjukkan jenis ralat yang dihadapi 'ralat: tiada padanan untuk 'operator =''. Sekarang, kami akan cuba menyelesaikan ralat ini.



Untuk menyelesaikan ralat ini, kami mempunyai pelbagai cara untuk menghantar nilai kepada pembina mana-mana kelas. Dalam kaedah pertama, kami hanya akan menetapkan objek 'nama1' kepada 'nama2' kerana kami telah menghantar nilai yang sama kepada kedua-dua objek supaya tidak perlu menghantarnya secara berasingan. Sekarang kita laksanakan kod tersebut.

int utama ( int argc, char ** argv ) {

nama_objek saya1 ( 'Anna' , 'smith' ) ;
nama_objek saya2 ;
nama2 = nama1 ;
nama1. tunjuk ( ) ;
nama2. tunjuk ( ) ;

Selepas membuat perubahan pada kod seperti yang ditunjukkan di atas, kami mempunyai hasil yang diberikan dalam coretan di bawah. Kami telah memaparkan nama yang dihantar kepada pembina dipaparkan dengan jayanya tanpa sebarang ralat.

Kaedah kedua untuk menyelesaikan ralat ini ialah apabila kita perlu menghantar nilai yang berbeza kepada kedua-dua objek. Kami hanya akan menggunakan nama kelas bersama-sama dengan nilai yang akan dihantar kepada pembina sebagai hujah. Kami melepasi nama pertama 'jhone' dan nama kedua 'smith'. Kemudian, kami melaksanakan kod tersebut.

int utama ( int argc, char ** argv ) {

nama objek_saya1 ( 'Anna' , 'smith' ) ;
nama_objek saya2 ;
nama2 = my_object ( 'john', 'smith' ) ;

nama1. tunjuk ( ) ;
nama2. tunjuk ( ) ;

Selepas melaksanakan kod yang ditambah di atas, kami mempunyai output seperti yang ditunjukkan di bawah. Untuk objek 'nama1', ia memaparkan nama 'Anna smith' dan untuk objek kedua 'nama2' ia memaparkan 'Jhone Smith'. Tetapi kali ini kod kami berfungsi dengan baik tanpa sebarang ralat di dalamnya.

Sekarang, kami akan mencuba kaedah lain untuk melaksanakan kod kami dengan jayanya. Seperti dalam kes di atas, kami cuba memberikan nilai kepada objek menggunakan pengendali tugasan. Tetapi kali ini, kita akan lulus nilai pada masa pengisytiharan objek. Seperti yang dapat kita lihat dalam coretan di bawah, pada masa pengisytiharan objek 'nama1', kami menyerahkan nilai sebagai hujah kepada objek yang mengulangi langkah yang sama untuk 'nama2'. Sekarang, kami melaksanakan kod sekali lagi.

int utama ( int argc, char ** argv ) {
nama objek_saya1 ( 'Anna' , 'smith' ) ;
nama_objek saya2 ( 'john', 'smith' ) ;
nama1. tunjuk ( ) ;
nama2. tunjuk ( ) ;

Selepas kod dilaksanakan untuk kali ini juga, kami tidak mengalami sebarang ralat yang bermakna ini juga akan menghalang kami daripada mengalami sebarang ralat.

Kesimpulan

Kami telah membincangkan secara ringkas ralat yang mungkin kami hadapi semasa mengerjakan fungsi yang diakses daripada kelas. Kami juga telah mengkaji punca dan kaedah untuk menyelesaikan ralat 'tiada beban yang berdaya maju'. Selalunya ralat ini sukar difahami untuk pengaturcara baru jadi kami cuba untuk mereka memudahkan untuk menyingkirkan ini dengan melaksanakan contoh dan juga dengan penjelasannya.