C++'da 'Başlatma İçin Eşleşen Yapıcı Yok' Hatası Nasıl Çözülür

C Da Baslatma Icin Eslesen Yapici Yok Hatasi Nasil Cozulur



C++'da yapıcı, adını ilgili olduğu sınıfın adından alan belirli bir üye işlevdir. Nesnenin üyeleri için bazı yararlı değerlerin başlatılması için kullanılır. Yapıcı kullanıcı tarafından tanımlanmamışsa, C++ derleyicisi varsayılan bir kurucu oluşturur ve hiçbir parametre ve boş bir gövde beklemez. Ancak kullanıcı tanımlı bir kurucu varsa gövdesini ve parametrelerini bildirmek gerekir.

C++'da 'Başlatma için Eşleşen Yapıcı Yok' Hatasının nedeni nedir?

C++'da yapıcılarla uğraşırken 'Başlatma için Eşleşen Yapıcı Yok' hatasıyla karşılaşılır, bunun nedeni genellikle bir kurucuya derleyici tarafından varsayılan kurucu adı verildiğinde oluşturulmamasıdır, dolayısıyla kurucunun parametrelerini ve gövdesini kendiniz bildirmeniz gerekir. Uygun parametrelerin bildirilmemesi bu tür yapıcı hatalarına neden olur.







Basit bir metin dosyası oluşturun, Square() işlevinin kodunu bu dosyaya yapıştırın ve .h uzantısıyla kaydedin. Şimdi bu dosyayı CPP derleyicisinin bin klasörünün include klasörüne yapıştırın. Şimdi, bu başlık dosyasını main.cpp'de çağırdığınızda, bu dosya derleyici tarafından okunacaktır.



Square.h Başlık Dosyası

#ifndef SQUARE_H

#SQUARE_H'yi tanımla


sınıf Kare {

özel :

çift uzunluk ;

çift Genişlik ;

halk :

Kare ( çift , çift ) ;

çift getLength ( ) yapı ;

çift getWidth ( ) yapı ;

} ;



Kare :: Kare ( çift ben, çift İçinde ) {

uzunluk = ben ;
Genişlik = İçinde ;

}



çift Kare :: getWidth ( ) yapı { geri dönmek Genişlik ; }

çift Kare :: getLength ( ) yapı { geri dönmek uzunluk ; }



#endif

main.cpp Başlık Dosyası

#include

#include 'kare.h'

kullanarak ad alanı std ;



int ana ( )

{

Kare kutu1 ( 10.0 , 10.0 ) ;

Kare kutu2 ;



cout << ' Kutu 1'in genişliği ve uzunluğu: ' << kutu1. getWidth ( ) << ', ' << kutu1. getLength ( ) << sonunda ;

cout << ' Kutu 2'nin genişliği ve uzunluğu: ' << kutu2. getWidth ( ) << ', ' << kutu2. getLength ( ) << sonunda ;



kutu2 = kutu1 ;

cout << ' Kare Kutu 1, Kare Kutu 2'ye eşit olduğunda ' << sonunda ;

cout << ' Kutu 1'in genişliği ve uzunluğu: ' << kutu1. getWidth ( ) << ', ' << kutu1. getLength ( ) << sonunda ;

cout << ' Kutu 2'nin genişliği ve uzunluğu: ' << kutu2. getWidth ( ) << ', ' << kutu2. getLength ( ) << sonunda ;



geri dönmek 0 ;

}

Bu programda, kullanıcı iki kare kutunun uzunluğunu ve genişliğini girer ve ardından iki kutuyu eşitler ve bunların uzunluk ve genişliğini döndürür:




Derleyici 14. satırdaki hatayı döndürür çünkü yüklenici kendisine hiçbir argüman sunulmamasına rağmen iki argüman beklemektedir:





8. satırda derleyici yapıcıda bir hata döndürüyor çünkü tanımlanmış argümanların olması gerekirken argümanlar sağlanmıyor.

C++'da 'Başlatma İçin Eşleşen Yapıcı Yok' Hatası Nasıl Çözülür

Derleyici, hatayı main.cpp kodunun 8. satırında görüntüler çünkü Square'in varsayılan yapıcısı çağrılmaya çalışılır. Derleyici varsayılan bir kurucu oluşturamaz çünkü zaten iki argüman alan kullanıcı tanımlı bir kurucu vardır. Bu nedenle parametrelerini şu şekilde belirtin:



Kare kutu2 ( 0 , 10 ) ;

Bir derleyici, yalnızca kullanıcı tanımlı bir kurucuya sahip olmadığında varsayılan bir kurucu oluşturur. Dolayısıyla burada bu durumda tanımlanmış bir kurucu olduğunda, varsayılan kurucunun kullanıcı tarafından sağlanması gerekir. Bu nedenle, bu amaçla Square.h dosyasındaki iki bağımsız değişkenli yapıcıda da varsayılan bağımsız değişkenler sağlayın. Bu, verileri başlatılmamış halde bırakmaz.

Kare :: Kare ( çift ben = 0 , çift İçinde = 0 )

Yapıcı hatası, yapıcıyı ve parametrelerini doğru bir şekilde çağırıp bildirerek düzeltilebilir. Main.cpp ve Square.h'deki kodlar yukarıda verilen talimatlara göre değiştirilir. Ve eşleşmeyen yapıcı hatası çözüldü. Bu, başlık dosyasının güncellenmiş kodudur:

Bu, ana dosyanın güncellenmiş kodudur:

Hata ayıklama hatalarından sonra yukarıdaki kodlar aşağıdaki çıktıyı döndürür:

İki kare kutunun genişliği ve uzunluğu kullanıcı tarafından sağlanır ve parametreleri döndürülür. Daha sonra her iki kutuyu da eşit yapmak için bir koşul uygulanır ve ardından bunlara karşılık gelen yeni uzunluk ve genişlik değerleri döndürülür.

Çözüm

C++'da yapıcı, adını ilgili olduğu sınıfın adından alan belirli bir üye işlevdir. Nesnenin üyeleri için bazı yararlı değerlerin başlatılması için kullanılır. C++'da Constructor'ın bildiriminde hata oluştuğunda 'No Matching Constructor for Başlatma' Hatası ile karşılaşılmaktadır. Genellikle, C++ derleyicisi kendisi bir yapıcı oluşturur, ancak yapıcılar kullanıcı tarafından bildirildiğinde, bu tür hatalarla karşılaşmamak için yapıcının parametrelerinin ve gövdesinin uygun şekilde bildirilmesi gerekir.