So beheben Sie den Fehler „Kein passender Konstruktor für die Initialisierung von“ in C++

So Beheben Sie Den Fehler Kein Passender Konstruktor Fur Die Initialisierung Von In C



In C++ ist ein Konstruktor eine bestimmte Mitgliedsfunktion, deren Name nach dem Namen der Klasse benannt ist, auf die sie sich bezieht. Es wird zur Initialisierung einiger nützlicher Werte für die Mitglieder des Objekts verwendet. Wenn der Konstruktor nicht vom Benutzer definiert wird, generiert der C++-Compiler einen Standardkonstruktor und erwartet keine Parameter und einen leeren Textkörper. Wenn jedoch ein benutzerdefinierter Konstruktor vorhanden ist, müssen dessen Hauptteil und Parameter deklariert werden.

Was verursacht den Fehler „Kein passender Konstruktor für die Initialisierung von“ in C++?

Beim Umgang mit Konstruktoren in C++ tritt der Fehler „Kein passender Konstruktor für die Initialisierung von“ auf. Dies liegt normalerweise daran, dass beim Aufruf eines Konstruktors der Standardkonstruktor vom Compiler nicht erstellt wird, sodass Sie die Parameter und den Hauptteil des Konstruktors selbst deklarieren müssen. Wenn die richtigen Parameter nicht deklariert werden, führt dies zu einem Konstruktorfehler dieser Art.







Erstellen Sie eine einfache Textdatei, fügen Sie den Code der Funktion Square() ein und speichern Sie sie mit der Erweiterung .h. Fügen Sie diese Datei nun in den Include-Ordner des bin-Ordners des CPP-Compilers ein. Beim Aufruf dieser Header-Datei in main.cpp wird diese Datei nun vom Compiler gelesen.



Square.h-Header-Datei

#ifndef SQUARE_H

#definiere SQUARE_H


Klasse Quadrat {

Privat :

doppelt Länge ;

doppelt Breite ;

öffentlich :

Quadrat ( doppelt , doppelt ) ;

doppelt getLength ( ) const ;

doppelt getWidth ( ) const ;

} ;



Quadrat :: Quadrat ( doppelt lch, doppelt In ) {

Länge = l ;
Breite = In ;

}



doppelt Quadrat :: getWidth ( ) const { zurückkehren Breite ; }

doppelt Quadrat :: getLength ( ) const { zurückkehren Länge ; }



#endif

main.cpp-Headerdatei

#include

#include „square.h“

verwenden Namensraum std ;



int hauptsächlich ( )

{

Quadratischer Kasten1 ( 10.0 , 10.0 ) ;

Quadratischer Kasten2 ;



cout << „Breite und Länge von Box 1:“ << Box1. getWidth ( ) << ',' << Box1. getLength ( ) << endl ;

cout << „Breite und Länge von Box 2:“ << Kasten2. getWidth ( ) << ',' << Kasten2. getLength ( ) << endl ;



Kasten2 = Box1 ;

cout << „Wenn Square Box 1 gleich Square Box 2 ist“ << endl ;

cout << „Breite und Länge von Box 1:“ << Box1. getWidth ( ) << ',' << Box1. getLength ( ) << endl ;

cout << „Breite und Länge von Box 2:“ << Kasten2. getWidth ( ) << ',' << Kasten2. getLength ( ) << endl ;



zurückkehren 0 ;

}

In diesem Programm gibt der Benutzer die Länge und Breite zweier quadratischer Kästchen ein, setzt dann die beiden Kästchen gleich und gibt deren Länge und Breite zurück:




Der Compiler gibt den Fehler in Zeile 14 zurück, da der Auftragnehmer zwei Argumente erwartet, obwohl ihm keine Argumente bereitgestellt werden:





In Zeile 8 gibt der Compiler einen Fehler im Konstruktor zurück, da die Argumente nicht bereitgestellt werden, obwohl die definierten Argumente vorhanden sein müssen.

So beheben Sie den Fehler „Kein passender Konstruktor für die Initialisierung von“ in C++

Der Compiler zeigt den Fehler in Zeile 8 des main.cpp-Codes an, da versucht wird, den Standardkonstruktor von Square aufzurufen. Der Compiler kann keinen Standardkonstruktor generieren, da es bereits einen benutzerdefinierten Konstruktor gibt, der zwei Argumente akzeptiert. Geben Sie daher seine Parameter wie folgt an:



Quadratischer Kasten2 ( 0 , 10 ) ;

Ein Compiler generiert nur dann einen Standardkonstruktor, wenn er keinen benutzerdefinierten Konstruktor hat. Wenn also in diesem Fall ein Konstruktor definiert ist, muss der Standardkonstruktor vom Benutzer bereitgestellt werden. Geben Sie zu diesem Zweck auch im Konstruktor mit zwei Argumenten in der Datei Square.h Standardargumente an. Dadurch bleiben die Daten nicht uninitialisiert.

Quadrat :: Quadrat ( doppelt l = 0 , doppelt In = 0 )

Der Konstruktorfehler kann behoben werden, indem der Konstruktor und seine Parameter ordnungsgemäß aufgerufen und deklariert werden. Die Codes in main.cpp und Square.h werden gemäß den oben gegebenen Anweisungen geändert. Und der Fehler „Kein passender Konstruktor“ wurde behoben. Dies ist der aktualisierte Code für die Header-Datei:

Dies ist der aktualisierte Code für die Hauptdatei:

Die obigen Codes geben nach dem Debuggen von Fehlern die folgende Ausgabe zurück:

Die Breite und Länge zweier quadratischer Kästchen werden vom Benutzer bereitgestellt und ihre Parameter werden zurückgegeben. Später wird eine Bedingung angewendet, um beide Felder gleich zu machen, und dann werden ihre neuen entsprechenden Längen- und Breitenwerte zurückgegeben.

Abschluss

In C++ ist ein Konstruktor eine bestimmte Mitgliedsfunktion, deren Name nach dem Namen der Klasse benannt ist, auf die sie sich bezieht. Es wird zur Initialisierung einiger nützlicher Werte für die Mitglieder des Objekts verwendet. Der Fehler „Kein passender Konstruktor für die Initialisierung von“ tritt in C++ auf, wenn in der Deklaration des Konstruktors ein Fehler vorliegt. Normalerweise generiert der C++-Compiler selbst einen Konstruktor. Wenn die Konstruktoren jedoch vom Benutzer deklariert werden, müssen die Parameter und der Konstruktorkörper ordnungsgemäß deklariert werden, um solche Fehler zu vermeiden.