Come risolvere l'errore 'Nessun costruttore corrispondente per l'inizializzazione di' in C++

Come Risolvere L Errore Nessun Costruttore Corrispondente Per L Inizializzazione Di In C



In C++ un costruttore è una particolare funzione membro che prende il nome dal nome della classe a cui è correlato. Viene utilizzato per l'inizializzazione di alcuni valori utili per i membri dell'oggetto. Se il costruttore non è definito dall'utente, il compilatore C++ genera un costruttore predefinito e non prevede parametri e un corpo vuoto. Tuttavia, quando è presente un costruttore definito dall'utente, è necessario dichiararne il corpo e i parametri.

Cosa causa l'errore 'Nessun costruttore corrispondente per l'inizializzazione di' in C++?

Quando si ha a che fare con i costruttori in C++ viene riscontrato l'errore 'Nessun costruttore corrispondente per l'inizializzazione di', ciò è solitamente dovuto al fatto che quando un costruttore viene chiamato il costruttore predefinito dal compilatore non viene creato, quindi è necessario dichiarare personalmente i parametri e il corpo del costruttore. La mancata dichiarazione dei parametri corretti provoca questo tipo di errore del costruttore.







Crea un semplice file di testo, incolla al suo interno il codice della funzione Square() e salvalo con l'estensione .h. Ora incolla questo file nella cartella include della cartella bin del compilatore CPP. Ora, richiamando questo file di intestazione in main.cpp, questo file verrà letto dal compilatore.



File di intestazione Square.h

#ifndef QUADRATO_H

#define QUADRATO_H


classe Piazza {

privato :

Doppio lunghezza ;

Doppio larghezza ;

pubblico :

Piazza ( Doppio , Doppio ) ;

Doppio getLength ( ) cost ;

Doppio getWidth ( ) cost ;

} ;



Piazza :: Piazza ( Doppio io, Doppio In ) {

lunghezza = l ;
larghezza = In ;

}



Doppio Piazza :: getWidth ( ) cost { ritorno larghezza ; }

Doppio Piazza :: getLength ( ) cost { ritorno lunghezza ; }



#finisci se

File di intestazione main.cpp

#include

#include 'quadrato.h'

utilizzando spazio dei nomi standard ;



int principale ( )

{

Scatola quadrata1 ( 10.0 , 10.0 ) ;

Scatola quadrata2 ;



cout << ' larghezza e lunghezza della casella 1: ' << scatola1. getWidth ( ) << ', ' << scatola1. getLength ( ) << fine ;

cout << ' larghezza e lunghezza della casella 2: ' << scatola2. getWidth ( ) << ', ' << scatola2. getLength ( ) << fine ;



scatola2 = scatola1 ;

cout << ' Quando la casella quadrata 1 è uguale alla casella quadrata 2 ' << fine ;

cout << ' larghezza e lunghezza della casella 1: ' << scatola1. getWidth ( ) << ', ' << scatola1. getLength ( ) << fine ;

cout << ' larghezza e lunghezza della casella 2: ' << scatola2. getWidth ( ) << ', ' << scatola2. getLength ( ) << fine ;



ritorno 0 ;

}

In questo programma, l'utente inserisce la lunghezza e la larghezza di due riquadri quadrati, quindi identifica i due riquadri e restituisce la loro lunghezza e larghezza:




Il compilatore restituisce l'errore nella riga n. 14 perché il contraente si aspetta due argomenti mentre non gli vengono forniti argomenti:





Nella riga#8 il compilatore restituisce un errore nel costruttore perché gli argomenti non vengono forniti mentre devono esserci gli argomenti definiti.

Come risolvere l'errore 'Nessun costruttore corrispondente per l'inizializzazione di' in C++

Il compilatore visualizza l'errore nella riga n. 8 del codice main.cpp perché si tenta di richiamare il costruttore predefinito di Square. Il compilatore non può generare un costruttore predefinito perché esiste già un costruttore definito dall'utente che accetta due argomenti. Pertanto, specificarne i parametri come:



Scatola quadrata2 ( 0 , 10 ) ;

Un compilatore genera un costruttore predefinito solo se non dispone di alcun costruttore definito dall'utente. Quindi in questo caso, quando è definito un costruttore, il costruttore predefinito deve essere fornito dall'utente. Pertanto, a questo scopo, fornire argomenti predefiniti anche nel costruttore a due argomenti nel file Square.h. Ciò non lascia i dati non inizializzati.

Piazza :: Piazza ( Doppio l = 0 , Doppio In = 0 )

L'errore del costruttore può essere corretto chiamando e dichiarando correttamente il costruttore e i suoi parametri. I codici in main.cpp e Square.h vengono modificati secondo le istruzioni fornite sopra. E l'errore del costruttore di mancata corrispondenza è stato risolto. Questo è il codice aggiornato per il file di intestazione:

Questo è il codice aggiornato per il file principale:

I codici precedenti dopo gli errori di debug restituiscono il seguente output:

La larghezza e la lunghezza di due riquadri quadrati vengono fornite dall'utente e vengono restituiti i relativi parametri. Successivamente viene applicata una condizione per rendere uguali entrambe le caselle, quindi verranno restituiti i nuovi valori di lunghezza e larghezza corrispondenti.

Conclusione

In C++ un costruttore è una particolare funzione membro che prende il nome dal nome della classe a cui è correlato. Viene utilizzato per l'inizializzazione di alcuni valori utili per i membri dell'oggetto. L'errore 'Nessun costruttore corrispondente per l'inizializzazione di' in C++ viene riscontrato quando si verifica un errore nella dichiarazione del costruttore. Di solito, il compilatore C++ genera esso stesso un costruttore, ma quando i costruttori vengono dichiarati dall'utente, deve esserci la corretta dichiarazione dei parametri e del corpo del costruttore per evitare di incorrere in tali errori.