Cómo resolver el error 'No hay constructor coincidente para la inicialización de' en C++

Como Resolver El Error No Hay Constructor Coincidente Para La Inicializacion De En C



En C++, un constructor es una función miembro particular que toma su nombre después del nombre de la clase con la que está relacionado. Se utiliza para la inicialización de algunos valores útiles para los miembros del objeto. Si el usuario no define el constructor, el compilador de C++ genera un constructor predeterminado y no espera parámetros y un cuerpo vacío. Sin embargo, cuando existe un constructor definido por el usuario, es necesario declarar su cuerpo y sus parámetros.

¿Qué causa el error 'No hay constructor coincidente para la inicialización de' en C++?

Cuando se trata de constructores en C++, se produce el error 'No hay constructor coincidente para la inicialización de', esto generalmente se debe a que cuando el compilador llama a un constructor, el constructor predeterminado no se crea, por lo que debe declarar los parámetros y el cuerpo del constructor usted mismo. No declarar los parámetros adecuados da como resultado este tipo de error de constructor.







Cree un archivo de texto simple, pegue en él el código de la función Square() y guárdelo con la extensión .h. Ahora pegue este archivo en la carpeta de inclusión de la carpeta bin del compilador CPP. Ahora, al llamar a este archivo de encabezado en main.cpp, el compilador leerá este archivo.



Archivo de encabezado Square.h

#ifndef CUADRADO_H

#definir CUADRADO_H


clase Cuadrado {

    privado :

        doble longitud ;

        doble ancho ;

    público :

Cuadrado ( doble , doble ) ;

        doble obtenerLongitud ( ) constante ;

        doble obtener ancho ( ) constante ;

} ;



Cuadrado :: Cuadrado ( doble yo, doble En ) {

longitud = yo ;
ancho = En ;

}



doble Cuadrado :: obtener ancho ( ) constante { devolver ancho ; }

doble Cuadrado :: obtenerLongitud ( ) constante { devolver longitud ; }



#terminara si

Archivo de encabezado main.cpp

#incluir

#incluir 'cuadrado.h'

usando espacio de nombres enfermedad de transmisión sexual ;



En t principal ( )

{

Caja cuadrada1 ( 10.0 , 10.0 ) ;

caja cuadrada2 ;



    corte << ' ancho y largo de la casilla 1: ' << cuadro1. obtener ancho ( ) << ', ' << cuadro1. obtenerLongitud ( ) << fin ;

    corte << ' ancho y largo de la casilla 2: ' << cuadro2. obtener ancho ( ) << ', ' << cuadro2. obtenerLongitud ( ) << fin ;



caja2 = caja1 ;

    corte << ' Cuando el cuadro cuadrado 1 es igual al cuadro cuadrado 2 ' << fin ;

    corte << ' ancho y largo de la casilla 1: ' << cuadro1. obtener ancho ( ) << ', ' << cuadro1. obtenerLongitud ( ) << fin ;

    corte << ' ancho y largo de la casilla 2: ' << cuadro2. obtener ancho ( ) << ', ' << cuadro2. obtenerLongitud ( ) << fin ;



    devolver 0 ;

}

En este programa, el usuario ingresa el largo y el ancho de dos cuadros cuadrados y luego iguala los dos cuadros y devuelve su largo y ancho:




El compilador devuelve el error en la línea 14 porque el contratista espera dos argumentos mientras que no se le proporcionan argumentos:





En la línea n.° 8, el compilador devuelve un error en el constructor porque no se proporcionan los argumentos mientras deben existir los argumentos definidos.

Cómo resolver el error 'No hay constructor coincidente para la inicialización de' en C++

El compilador muestra el error en la línea 8 del código main.cpp porque se intenta invocar el constructor predeterminado de Square. El compilador no puede generar un constructor predeterminado porque ya existe un constructor definido por el usuario que toma dos argumentos. Por lo tanto, especifique sus parámetros como:



caja cuadrada2 ( 0 , 10 ) ;

Un compilador genera un constructor predeterminado sólo si no tiene ningún constructor definido por el usuario. Entonces, en este caso, cuando hay un constructor definido, el usuario debe proporcionar el constructor predeterminado. Entonces, para este propósito, proporcione también argumentos predeterminados en el constructor de dos argumentos en el archivo Square.h. Esto no deja los datos sin inicializar.

Cuadrado :: Cuadrado ( doble yo = 0 , doble En = 0 )

El error del constructor se puede solucionar llamando y declarando correctamente el constructor y sus parámetros. Los códigos en main.cpp y Square.h se cambian de acuerdo con las instrucciones dadas anteriormente. Y se resuelve el error del constructor que no coincide. Este es el código actualizado para el archivo de encabezado:

Este es el código actualizado para el archivo principal:

Los códigos anteriores después de depurar errores devuelven el siguiente resultado:

El usuario proporciona el ancho y el largo de dos cuadros cuadrados y se devuelven sus parámetros. Posteriormente se aplica una condición para que ambos cuadros sean iguales y luego se devolverán sus nuevos valores de longitud y ancho correspondientes.

Conclusión

En C++, un constructor es una función miembro particular que toma su nombre después del nombre de la clase con la que está relacionado. Se utiliza para la inicialización de algunos valores útiles para los miembros del objeto. El error 'No hay constructor coincidente para la inicialización de' en C++ se produce cuando hay un error en la declaración del constructor. Por lo general, el compilador de C++ genera un constructor por sí mismo, pero cuando el usuario declara los constructores, debe haber una declaración adecuada de los parámetros y el cuerpo del constructor para evitar enfrentar tales errores.