Cara Menyelesaikan Ralat 'Tiada Padanan Pembina untuk Permulaan' dalam C++

Cara Menyelesaikan Ralat Tiada Padanan Pembina Untuk Permulaan Dalam C



Dalam C++ pembina ialah fungsi ahli tertentu yang mengambil namanya selepas nama kelas yang berkaitan dengannya. Ia digunakan untuk permulaan beberapa nilai berguna untuk ahli objek. Jika pembina tidak ditakrifkan oleh pengguna, pengkompil C++ menjana pembina lalai dan tidak mengharapkan parameter dan badan kosong. Walau bagaimanapun, apabila terdapat pembina yang ditentukan pengguna, adalah perlu untuk mengisytiharkan badan dan parameternya.

Apakah yang menyebabkan Ralat 'Tiada Pemadanan Pembina untuk Permulaan' dalam C++?

Apabila berurusan dengan pembina dalam C++ 'Tiada Pemadanan Pembina untuk Permulaan' ralat dihadapi ini biasanya kerana apabila pembina dipanggil pembina lalai oleh pengkompil tidak dicipta, jadi anda perlu mengisytiharkan parameter dan badan pembina sendiri. Gagal mengisytiharkan parameter yang betul mengakibatkan ralat pembina jenis ini.







Cipta fail teks ringkas, tampal kod fungsi Square() di dalamnya dan simpan dengan sambungan .h. Sekarang tampal fail ini ke dalam folder sertakan folder bin pengkompil CPP. Sekarang, apabila memanggil fail pengepala ini dalam main.cpp, fail ini akan dibaca oleh pengkompil.



Fail Pengepala Square.h

#ifndef SQUARE_H

#define SQUARE_H


kelas Segi empat {

persendirian :

berganda panjang ;

berganda lebar ;

awam :

Segi empat ( berganda , berganda ) ;

berganda getLength ( ) const ;

berganda getWidth ( ) const ;

} ;



Segi empat :: Segi empat ( berganda l, berganda Dalam ) {

panjang = l ;
lebar = Dalam ;

}



berganda Segi empat :: getWidth ( ) const { kembali lebar ; }

berganda Segi empat :: getLength ( ) const { kembali panjang ; }



#endif

Fail Pengepala main.cpp

#include

#include 'square.h'

menggunakan ruang nama std ;



int utama ( )

{

Kotak segi empat sama1 ( 10.0 , 10.0 ) ;

Kotak persegi2 ;



cout << ' lebar dan panjang kotak 1: ' << kotak1. getWidth ( ) << ',' << kotak1. getLength ( ) << endl ;

cout << ' lebar dan panjang kotak 2: ' << kotak2. getWidth ( ) << ',' << kotak2. getLength ( ) << endl ;



kotak2 = kotak1 ;

cout << ' Apabila Kotak Persegi 1 sama dengan Kotak Petak 2 ' << endl ;

cout << ' lebar dan panjang kotak 1: ' << kotak1. getWidth ( ) << ',' << kotak1. getLength ( ) << endl ;

cout << ' lebar dan panjang kotak 2: ' << kotak2. getWidth ( ) << ',' << kotak2. getLength ( ) << endl ;



kembali 0 ;

}

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




Pengkompil mengembalikan ralat dalam baris#14 kerana kontraktor menjangkakan dua hujah sementara tiada hujah disediakan kepadanya:





Dalam baris # 8 pengkompil mengembalikan ralat dalam pembina kerana argumen tidak disediakan sementara mesti ada argumen yang ditentukan.

Cara Menyelesaikan Ralat 'Tiada Padanan Pembina untuk Permulaan' dalam C++

Pengkompil memaparkan ralat dalam baris#8 kod main.cpp kerana pembina lalai Square cuba digunakan. Pengkompil tidak boleh menjana pembina lalai kerana terdapat pembina yang telah ditetapkan pengguna yang mengambil dua hujah. Oleh itu, tentukan parameternya sebagai:



Kotak persegi2 ( 0 , 10 ) ;

Pengkompil menjana pembina lalai hanya jika ia tidak mempunyai sebarang pembina yang ditentukan pengguna. Jadi di sini dalam kes ini apabila terdapat pembina ditakrifkan, pembina lalai mesti disediakan oleh pengguna. Jadi, untuk tujuan ini, sediakan hujah lalai dalam pembina dua hujah dalam fail Square.h juga. Ini tidak membiarkan data tidak dimulakan.

Segi empat :: Segi empat ( berganda l = 0 , berganda Dalam = 0 )

Ralat pembina boleh diperbaiki dengan memanggil dan mengisytiharkan pembina dan parameternya dengan betul. Kod dalam main.cpp dan Square.h ditukar mengikut arahan yang diberikan di atas. Dan ralat pembina tidak sepadan diselesaikan. Ini ialah kod yang dikemas kini untuk fail pengepala:

Ini ialah kod yang dikemas kini untuk fail utama:

Kod di atas selepas ralat penyahpepijatan mengembalikan output berikut:

Lebar dan panjang dua kotak persegi disediakan oleh pengguna, dan parameternya dikembalikan. Kemudian syarat digunakan untuk menjadikan kedua-dua kotak sama, dan kemudian nilai panjang dan lebar sepadan baharunya akan dikembalikan.

Kesimpulan

Dalam C++ pembina ialah fungsi ahli tertentu yang mengambil namanya selepas nama kelas yang berkaitan dengannya. Ia digunakan untuk permulaan beberapa nilai berguna untuk ahli objek. Ralat 'No Matching Constructor for Initialization of' dalam C++ dihadapi apabila terdapat ralat dalam pengisytiharan pembina. Biasanya, pengkompil C++ menjana pembina itu sendiri, tetapi apabila pembina diisytiharkan oleh pengguna maka mesti ada pengisytiharan parameter dan badan pembina yang betul untuk mengelakkan daripada menghadapi ralat tersebut.