Cum se rezolvă eroarea „Fără constructor de potrivire pentru inițializarea” în C++

Cum Se Rezolva Eroarea Fara Constructor De Potrivire Pentru Initializarea In C



În C++, un constructor este o anumită funcție membru care își ia numele după numele clasei cu care este legată. Este folosit pentru inițializarea unor valori utile pentru membrii obiectului. Dacă constructorul nu este definit de utilizator, compilatorul C++ generează un constructor implicit și nu așteaptă parametri și un corp gol. Cu toate acestea, atunci când există un constructor definit de utilizator, este necesar să se declare corpul și parametrii acestuia.

Ce cauzează eroarea „Fără constructor de potrivire pentru inițializarea” în C++?

Când se confruntă cu constructori în C++, eroarea „Fără constructor de potrivire pentru inițializarea” se confruntă, de obicei, deoarece atunci când un constructor este numit constructorul implicit de către compilator nu este creat, așa că trebuie să declarați singur parametrii și corpul constructorului. Eșecul de a declara parametrii corespunzători duce la acest tip de eroare de constructor.







Creați un fișier text simplu, lipiți codul funcției Square() în el și salvați-l cu extensia .h. Acum lipiți acest fișier în folderul include din folderul bin al compilatorului CPP. Acum, la apelarea acestui fișier antet în main.cpp, acest fișier va fi citit de compilator.



Fișier antet Square.h

#ifndef SQUARE_H

#define SQUARE_H


clasă Pătrat {

privat :

dubla lungime ;

dubla lăţime ;

public :

Pătrat ( dubla , dubla ) ;

dubla getLength ( ) const ;

dubla getWidth ( ) const ;

} ;



Pătrat :: Pătrat ( dubla eu dubla În ) {

lungime = l ;
lăţime = În ;

}



dubla Pătrat :: getWidth ( ) const { întoarcere lăţime ; }

dubla Pătrat :: getLength ( ) const { întoarcere lungime ; }



#endif

Main.cpp Fișier antet

#include

#include „square.h”

folosind spatiu de nume std ;



int principal ( )

{

Cutie pătrată 1 ( 10.0 , 10.0 ) ;

Cutie pătrată 2 ;



cout << ' lățimea și lungimea casetei 1: ' << caseta 1. getWidth ( ) << ', ' << caseta 1. getLength ( ) << endl ;

cout << ' lățimea și lungimea casetei 2: ' << caseta 2. getWidth ( ) << ', ' << caseta 2. getLength ( ) << endl ;



caseta 2 = caseta 1 ;

cout << „Când Square Box 1 este egal cu Square Box 2” << endl ;

cout << ' lățimea și lungimea casetei 1: ' << caseta 1. getWidth ( ) << ', ' << caseta 1. getLength ( ) << endl ;

cout << ' lățimea și lungimea casetei 2: ' << caseta 2. getWidth ( ) << ', ' << caseta 2. getLength ( ) << endl ;



întoarcere 0 ;

}

În acest program, utilizatorul introduce lungimea și lățimea a două casete pătrate și apoi echivalează cele două casete și returnează lungimea și lățimea lor:




Compilatorul returnează eroarea în rândul #14, deoarece contractorul așteaptă două argumente, în timp ce nu îi sunt furnizate argumente:





În rândul #8, compilatorul returnează o eroare în constructor deoarece argumentele nu sunt furnizate în timp ce trebuie să existe argumente definite.

Cum se rezolvă eroarea „Fără constructor de potrivire pentru inițializarea” în C++

Compilatorul afișează eroarea în rândul #8 a codului main.cpp deoarece se încearcă să invoce constructorul implicit al Square. Compilatorul nu poate genera un constructor implicit deoarece există deja un constructor definit de utilizator care ia două argumente. Prin urmare, specificați parametrii acestuia ca:



Cutie pătrată 2 ( 0 , 10 ) ;

Un compilator generează un constructor implicit numai dacă nu are niciun constructor definit de utilizator. Deci aici, în acest caz, când există un constructor definit, constructorul implicit trebuie să fie furnizat de utilizator. Deci, în acest scop, furnizați argumente implicite în constructorul cu două argumente și în fișierul Square.h. Acest lucru nu lasă datele neinițializate.

Pătrat :: Pătrat ( dubla l = 0 , dubla În = 0 )

Eroarea constructorului poate fi remediată prin apelarea și declararea corectă a constructorului și a parametrilor acestuia. Codurile din main.cpp și Square.h sunt modificate conform instrucțiunilor de mai sus. Și eroarea constructorului de nepotrivire este rezolvată. Acesta este codul actualizat pentru fișierul antet:

Acesta este codul actualizat pentru fișierul principal:

Codurile de mai sus după erorile de depanare returnează următoarea ieșire:

Lățimea și lungimea a două casete pătrate sunt furnizate de utilizator, iar parametrii acestora sunt returnați. Mai târziu se aplică o condiție pentru a face ambele casete egale, iar apoi noile lor valori corespunzătoare de lungime și lățime vor fi returnate.

Concluzie

În C++, un constructor este o anumită funcție membru care își ia numele după numele clasei cu care este legată. Este folosit pentru inițializarea unor valori utile pentru membrii obiectului. Eroarea „Fără constructor de potrivire pentru inițializarea” din C++ se confruntă atunci când există o eroare în declarația constructorului. De obicei, compilatorul C++ generează un constructor în sine, dar atunci când constructorii sunt declarați de utilizator, atunci trebuie să existe declararea corectă a parametrilor și a corpului constructorului pentru a evita astfel de erori.