Cara Mengatasi Kesalahan “Tidak Ada Konstruktor yang Cocok untuk Inisialisasi” di C++

Cara Mengatasi Kesalahan Tidak Ada Konstruktor Yang Cocok Untuk Inisialisasi Di C



Dalam C++, konstruktor adalah fungsi anggota tertentu yang namanya diambil dari nama kelas yang terkait dengannya. Ini digunakan untuk inisialisasi beberapa nilai yang berguna bagi anggota objek. Jika konstruktor tidak ditentukan oleh pengguna, kompiler C++ akan menghasilkan konstruktor default dan tidak mengharapkan parameter dan isi kosong. Namun, jika ada konstruktor yang ditentukan pengguna, isi dan parameternya perlu dideklarasikan.

Apa yang menyebabkan Kesalahan “Tidak Ada Konstruktor yang Cocok untuk Inisialisasi” di C++?

Ketika berhadapan dengan konstruktor di C++, kesalahan “Tidak Ada Konstruktor yang Cocok untuk Inisialisasi” terjadi, hal ini biasanya terjadi karena ketika sebuah konstruktor dipanggil, konstruktor default oleh kompiler tidak dibuat, jadi Anda harus mendeklarasikan sendiri parameter dan isi konstruktor. Gagal mendeklarasikan parameter yang tepat akan mengakibatkan kesalahan konstruktor jenis ini.







Buat file teks sederhana, tempelkan kode fungsi Square() di dalamnya, dan simpan dengan ekstensi .h. Sekarang rekatkan file ini ke dalam folder include pada folder bin kompiler CPP. Sekarang, saat memanggil file header ini di main.cpp, file ini akan dibaca oleh kompiler.



File Tajuk Square.h

#ifndef SQUARE_H

#definisikan KOTAK_H


kelas Persegi {

pribadi :

dobel panjang ;

dobel lebar ;

publik :

Persegi ( dobel , dobel ) ;

dobel dapatkan Panjangnya ( ) konstanta ;

dobel dapatkan Lebar ( ) konstanta ;

} ;



Persegi :: Persegi ( dobel aku, dobel Di dalam ) {

panjang = aku ;
lebar = Di dalam ;

}



dobel Persegi :: dapatkan Lebar ( ) konstanta { kembali lebar ; }

dobel Persegi :: dapatkan Panjangnya ( ) konstanta { kembali panjang ; }



#berakhir jika

File Tajuk utama.cpp

#termasuk

#sertakan 'persegi.h'

menggunakan ruang nama std ;



ke dalam utama ( )

{

Kotak persegi1 ( 10.0 , 10.0 ) ;

Kotak persegi2 ;



cout << ' lebar dan panjang kotak 1 : ' << kotak1. dapatkan Lebar ( ) << ', ' << kotak1. dapatkan Panjangnya ( ) << akhir ;

cout << ' lebar dan panjang kotak 2 : ' << kotak2. dapatkan Lebar ( ) << ', ' << kotak2. dapatkan Panjangnya ( ) << akhir ;



kotak2 = kotak1 ;

cout << ' Jika Kotak Persegi 1 sama dengan Kotak Persegi 2 ' << akhir ;

cout << ' lebar dan panjang kotak 1 : ' << kotak1. dapatkan Lebar ( ) << ', ' << kotak1. dapatkan Panjangnya ( ) << akhir ;

cout << ' lebar dan panjang kotak 2 : ' << kotak2. dapatkan Lebar ( ) << ', ' << kotak2. dapatkan Panjangnya ( ) << akhir ;



kembali 0 ;

}

Dalam program ini, pengguna memasukkan panjang dan lebar dua kotak persegi lalu menyamakan kedua kotak tersebut dan mengembalikan panjang dan lebarnya:




Kompiler mengembalikan kesalahan pada baris#14 karena kontraktor mengharapkan dua argumen sementara tidak ada argumen yang diberikan padanya:





Pada baris#8, kompiler mengembalikan kesalahan pada konstruktor karena argumen tidak diberikan padahal harus ada argumen yang ditentukan.

Cara Mengatasi Kesalahan “Tidak Ada Konstruktor yang Cocok untuk Inisialisasi” di C++

Kompiler menampilkan kesalahan pada baris#8 kode main.cpp karena konstruktor default Square dicoba untuk dipanggil. Kompiler tidak dapat menghasilkan konstruktor default karena sudah ada konstruktor yang ditentukan pengguna yang memerlukan dua argumen. Oleh karena itu, tentukan parameternya sebagai:



Kotak persegi2 ( 0 , 10 ) ;

Kompiler menghasilkan konstruktor default hanya jika ia tidak memiliki konstruktor yang ditentukan pengguna. Jadi dalam hal ini ketika ada konstruktor yang ditentukan, konstruktor default harus disediakan oleh pengguna. Jadi, untuk tujuan ini, berikan juga argumen default dalam konstruktor dua argumen di file Square.h. Hal ini tidak membuat data tidak diinisialisasi.

Persegi :: Persegi ( dobel aku = 0 , dobel Di dalam = 0 )

Kesalahan konstruktor dapat diperbaiki dengan memanggil dan mendeklarasikan konstruktor beserta parameternya dengan benar. Kode di main.cpp dan Square.h diubah sesuai dengan instruksi yang diberikan di atas. Dan kesalahan konstruktor yang tidak cocok teratasi. Ini adalah kode yang diperbarui untuk file header:

Ini adalah kode yang diperbarui untuk file utama:

Kode di atas setelah kesalahan debugging mengembalikan output berikut:

Lebar dan panjang dua kotak persegi disediakan oleh pengguna, dan parameternya dikembalikan. Kemudian suatu kondisi diterapkan untuk membuat kedua kotak sama, dan kemudian nilai panjang dan lebar baru yang sesuai akan dikembalikan.

Kesimpulan

Dalam C++, konstruktor adalah fungsi anggota tertentu yang namanya diambil dari nama kelas yang terkait dengannya. Ini digunakan untuk inisialisasi beberapa nilai yang berguna bagi anggota objek. Kesalahan “Tidak Ada Konstruktor yang Cocok untuk Inisialisasi” di C++ terjadi ketika ada kesalahan dalam deklarasi konstruktor. Biasanya, kompiler C++ menghasilkan konstruktor sendiri, tetapi ketika konstruktor dideklarasikan oleh pengguna maka harus ada deklarasi parameter dan isi konstruktor yang tepat untuk menghindari kesalahan seperti itu.