Kā atrisināt kļūdu “Nav atbilstoša konstruktora inicializācijai” programmā C++

Ka Atrisinat Kludu Nav Atbilstosa Konstruktora Inicializacijai Programma C



Programmā C++ konstruktors ir noteikta dalībnieka funkcija, kuras nosaukums ir aiz tās klases nosaukuma, ar kuru tas ir saistīts. To izmanto, lai inicializētu dažas objekta dalībniekiem noderīgas vērtības. Ja lietotājs nav definējis konstruktoru, C++ kompilators ģenerē noklusējuma konstruktoru un sagaida bez parametriem un tukšu pamattekstu. Tomēr, ja ir lietotāja definēts konstruktors, ir jādeklarē tā pamatteksts un parametri.

Kas izraisa kļūdu “Nav atbilstoša konstruktora inicializācijai” programmā C++?

Strādājot ar konstruktoriem programmā C++, kļūda “No Matching Constructor for Initialization of” parasti rodas tāpēc, ka tad, kad konstruktors tiek izsaukts, kompilators netiek izveidots noklusējuma konstruktors, tāpēc jums pašam ir jādeklarē konstruktora parametri un pamatteksts. Ja netiek deklarēti pareizi parametri, rodas šāda veida konstruktora kļūda.







Izveidojiet vienkāršu teksta failu, ielīmējiet tajā funkcijas Square() kodu un saglabājiet to ar paplašinājumu .h. Tagad ielīmējiet šo failu CPP kompilatora bin mapes iekļautajā mapē. Tagad, izsaucot šo galvenes failu main.cpp, šo failu nolasīs kompilators.



Square.h galvenes fails

#ifndef SQUARE_H

#define SQUARE_H


klasē Kvadrāts {

Privāts :

dubultā garums ;

dubultā platums ;

publiski :

Kvadrāts ( dubultā , dubultā ) ;

dubultā getLength ( ) konst ;

dubultā getWidth ( ) konst ;

} ;



Kvadrāts :: Kvadrāts ( dubultā l, dubultā In ) {

garums = l ;
platums = In ;

}



dubultā Kvadrāts :: getWidth ( ) konst { atgriezties platums ; }

dubultā Kvadrāts :: getLength ( ) konst { atgriezties garums ; }



#endif

main.cpp galvenes fails

#include

#include 'kvadrāts.h'

izmantojot nosaukumvieta std ;



starpt galvenais ( )

{

Kvadrātveida kaste1 ( 10.0 , 10.0 ) ;

Kvadrātveida kaste2 ;



cout << '1. kastes platums un garums:' << kaste1. getWidth ( ) << ',' << kaste1. getLength ( ) << endl ;

cout << '2. kastes platums un garums:' << kaste2. getWidth ( ) << ',' << kaste2. getLength ( ) << endl ;



kaste2 = kaste1 ;

cout << 'Kad kvadrāts 1 ir vienāds ar kvadrātveida lodziņu 2' << endl ;

cout << '1. kastes platums un garums:' << kaste1. getWidth ( ) << ',' << kaste1. getLength ( ) << endl ;

cout << '2. kastes platums un garums:' << kaste2. getWidth ( ) << ',' << kaste2. getLength ( ) << endl ;



atgriezties 0 ;

}

Šajā programmā lietotājs ievada divu kvadrātveida lodziņu garumu un platumu un pēc tam pielīdzina divus lodziņus un atgriež to garumu un platumu:




Kompilators atgriež kļūdu 14. rindiņā, jo darbuzņēmējs sagaida divus argumentus, kamēr tam nav norādīts neviens arguments:





8. rindā kompilators atgriež kļūdu konstruktorā, jo argumenti nav norādīti, kamēr ir jābūt definētajiem argumentiem.

Kā atrisināt kļūdu “Nav atbilstoša konstruktora inicializācijai” programmā C++

Kompilators parāda kļūdu main.cpp koda 8. rindā, jo tiek mēģināts izsaukt Square noklusējuma konstruktoru. Kompilators nevar ģenerēt noklusējuma konstruktoru, jo jau ir lietotāja definēts konstruktors, kas izmanto divus argumentus. Tāpēc norādiet tā parametrus kā:



Kvadrātveida kaste2 ( 0 , 10 ) ;

Kompilators ģenerē noklusējuma konstruktoru tikai tad, ja tam nav neviena lietotāja definēta konstruktora. Tātad šajā gadījumā, ja ir definēts konstruktors, lietotājam ir jānodrošina noklusējuma konstruktors. Tāpēc šim nolūkam norādiet noklusējuma argumentus arī faila Square.h divu argumentu konstruktorā. Tas neatstāj datus inicializētus.

Kvadrāts :: Kvadrāts ( dubultā l = 0 , dubultā In = 0 )

Konstruktora kļūdu var novērst, pareizi izsaucot un deklarējot konstruktoru un tā parametrus. Main.cpp un Square.h kodi tiek mainīti saskaņā ar iepriekš sniegtajiem norādījumiem. Un neatbilstošā konstruktora kļūda ir novērsta. Šis ir atjauninātais galvenes faila kods:

Šis ir atjauninātais galvenā faila kods:

Iepriekš minētie kodi pēc atkļūdošanas kļūdām atgriež šādu izvadi:

Divu kvadrātveida lodziņu platumu un garumu nodrošina lietotājs, un tiek atgriezti to parametri. Vēlāk tiek piemērots nosacījums, lai abas kastes būtu vienādas, un pēc tam tiks atgrieztas to jaunās atbilstošās garuma un platuma vērtības.

Secinājums

Programmā C++ konstruktors ir noteikta dalībnieka funkcija, kuras nosaukums ir aiz tās klases nosaukuma, ar kuru tas ir saistīts. To izmanto, lai inicializētu dažas objekta dalībniekiem noderīgas vērtības. Kļūda “Nav atbilstoša konstruktora inicializācijai” programmā C++ rodas, ja konstruktora deklarācijā ir kļūda. Parasti C++ kompilators pats ģenerē konstruktoru, bet, kad konstruktorus ir deklarējis lietotājs, ir jābūt pareizai parametru deklarācijai un konstruktora pamattekstam, lai izvairītos no šādām kļūdām.