Comment résoudre l'erreur « Aucun constructeur correspondant pour l'initialisation de » en C++

Comment Resoudre L Erreur Aucun Constructeur Correspondant Pour L Initialisation De En C



En C++, un constructeur est une fonction membre particulière qui prend son nom après le nom de la classe à laquelle elle est liée. Il est utilisé pour l'initialisation de certaines valeurs utiles pour les membres de l'objet. Si le constructeur n'est pas défini par l'utilisateur, le compilateur C++ génère un constructeur par défaut et n'attend aucun paramètre et un corps vide. Cependant, lorsqu'il existe un constructeur défini par l'utilisateur, il est nécessaire de déclarer son corps et ses paramètres.

Qu’est-ce qui cause l’erreur « Aucun constructeur correspondant pour l’initialisation de » en C++ ?

Lorsque vous traitez des constructeurs en C++, l'erreur « Aucun constructeur correspondant pour l'initialisation de » est généralement due au fait que lorsqu'un constructeur est appelé, le constructeur par défaut par le compilateur n'est pas créé, vous devez donc déclarer vous-même les paramètres et le corps du constructeur. Ne pas déclarer les paramètres appropriés entraîne ce type d’erreur de constructeur.







Créez un fichier texte simple, collez-y le code de la fonction Square() et enregistrez-le avec l'extension .h. Collez maintenant ce fichier dans le dossier include du dossier bin du compilateur CPP. Désormais, en appelant ce fichier d'en-tête dans main.cpp, ce fichier sera lu par le compilateur.



Fichier d'en-tête Square.h

#ifndef CARRE_H

#définir SQUARE_H


classe Carré {

privé :

double longueur ;

double largeur ;

publique :

Carré ( double , double ) ;

double obtenirLongueur ( ) const ;

double obtenirLargeur ( ) const ;

} ;



Carré :: Carré ( double je, double Dans ) {

longueur = je ;
largeur = Dans ;

}



double Carré :: obtenirLargeur ( ) const { retour largeur ; }

double Carré :: obtenirLongueur ( ) const { retour longueur ; }



#fin si

Fichier d'en-tête main.cpp

#include

#include 'carré.h'

en utilisant espace de noms norme ;



int principal ( )

{

Boîte carrée1 ( 10,0 , 10,0 ) ;

Boîte carrée2 ;



cout << ' largeur et longueur de la case 1 : ' << boîte1. obtenirLargeur ( ) << ', ' << boîte1. obtenirLongueur ( ) << fin ;

cout << ' largeur et longueur de la case 2 : ' << encadré2. obtenirLargeur ( ) << ', ' << encadré2. obtenirLongueur ( ) << fin ;



boîte2 = boîte1 ;

cout << ' Lorsque la Boîte Carrée 1 est égale à la Boîte Carrée 2 ' << fin ;

cout << ' largeur et longueur de la case 1 : ' << boîte1. obtenirLargeur ( ) << ', ' << boîte1. obtenirLongueur ( ) << fin ;

cout << ' largeur et longueur de la case 2 : ' << encadré2. obtenirLargeur ( ) << ', ' << encadré2. obtenirLongueur ( ) << fin ;



retour 0 ;

}

Dans ce programme, l'utilisateur saisit la longueur et la largeur de deux cases carrées, puis assimile les deux cases et renvoie leur longueur et leur largeur :




Le compilateur renvoie l'erreur à la ligne 14 car l'entrepreneur attend deux arguments alors qu'aucun argument ne lui est fourni :





A la ligne n°8 le compilateur renvoie une erreur dans le constructeur car les arguments ne sont pas fournis alors qu'il doit y avoir les arguments définis.

Comment résoudre l'erreur « Aucun constructeur correspondant pour l'initialisation de » en C++

Le compilateur affiche l'erreur dans la ligne 8 du code main.cpp car le constructeur par défaut de Square est tenté d'invoquer. Le compilateur ne peut pas générer de constructeur par défaut car il existe un constructeur déjà défini par l'utilisateur qui prend deux arguments. Par conséquent, spécifiez ses paramètres comme suit :



Boîte carrée2 ( 0 , dix ) ;

Un compilateur génère un constructeur par défaut uniquement s'il n'a aucun constructeur défini par l'utilisateur. Donc ici, dans ce cas, lorsqu'un constructeur est défini, le constructeur par défaut doit être fourni par l'utilisateur. Donc, à cette fin, fournissez également les arguments par défaut dans le constructeur à deux arguments du fichier Square.h. Cela ne laisse pas les données non initialisées.

Carré :: Carré ( double je = 0 , double Dans = 0 )

L'erreur du constructeur peut être corrigée en appelant et en déclarant correctement le constructeur et ses paramètres. Les codes dans main.cpp et Square.h sont modifiés selon les instructions données ci-dessus. Et l'erreur de constructeur sans correspondance est résolue. Voici le code mis à jour pour le fichier d'en-tête :

Voici le code mis à jour pour le fichier principal :

Les codes ci-dessus après des erreurs de débogage renvoient le résultat suivant :

La largeur et la longueur de deux cases carrées sont fournies par l'utilisateur et leurs paramètres sont renvoyés. Plus tard, une condition est appliquée pour rendre les deux cases égales, puis leurs nouvelles valeurs de longueur et de largeur correspondantes seront renvoyées.

Conclusion

En C++, un constructeur est une fonction membre particulière qui prend son nom après le nom de la classe à laquelle elle est liée. Il est utilisé pour l'initialisation de certaines valeurs utiles pour les membres de l'objet. L'erreur « Aucun constructeur correspondant pour l'initialisation de » en C++ se produit lorsqu'il y a une erreur dans la déclaration du constructeur. Habituellement, le compilateur C++ génère lui-même un constructeur, mais lorsque les constructeurs sont déclarés par l'utilisateur, il doit y avoir une déclaration appropriée des paramètres et du corps du constructeur pour éviter de faire face à de telles erreurs.