En el lenguaje C ++, los archivos de encabezado son muy importantes. Si estamos utilizando algunas palabras clave o métodos incorporados de C ++, debemos agregar sus respectivos archivos de encabezado en nuestro código, de lo contrario, el compilador nos dará el error. Ahora, para comprender mejor el error, primero, discutiremos cuáles son los archivos de encabezado y cuál es su propósito. Los archivos de encabezado se incluyen en la parte superior del código.
Los archivos de encabezado son como las bibliotecas de importación, que importamos, para usar sus funcionalidades. Estos archivos a veces actúan como archivos de clase que tienen diferentes funciones en ellos. Los archivos de encabezado son necesarios para agregar para usar esos. Si intentamos usar esas funciones directamente y no importar los archivos de encabezado, recibimos este error. Este error también ocurre cuando el compilador detecta cualquier identificador desconocido que tenga un tipo de datos conocido pero que no tenga una definición conocida. A veces, este error también ocurre si está utilizando un IDE o compilador obsoleto.
Este error ocurre en diferentes tipos que son los siguientes:
Esta no es una función o biblioteca incorporada. Estamos discutiendo que es un error y, como todos sabemos, que un error no tiene una sintaxis específica. Este es el mensaje que el compilador devuelve cuando recibimos nuestro error.
Error: el campo 'Parent' tiene un tipo incompleto 'A'
Tenga en cuenta que en el mensaje de error anterior, las palabras clave 'padre' y 'a' no son estáticas. Siguen cambiando dependiendo de su código. Esta cosa se entenderá después de realizar los ejemplos.
Ejemplo # 01:
Para tener una mejor comprensión de nuestro error, ahora realizaremos un ejemplo para obtener el error. Después de eso, resolveremos el error. Para hacerlo, hemos declarado una clase con el nombre de "TestClass". En nuestra clase en la sección Modificador de acceso público, hemos creado un objeto de nuestra clase con el nombre de "Parent".
Después de eso, creamos un puntero de nuestra clase que apunta hacia el puntero del objeto de nuestra clase. No estamos haciendo nada más ni estamos llamando a nada en el método principal () o realizando ninguna operación. Este es el ejemplo más simple que hemos tratado de realizar para que entiendas. Ahora, ejecutaremos nuestro código para ver los resultados.
#incluirEn la compilación de nuestro código, el sistema ha lanzado el error y no lo ha compilado con éxito. Para descubrir el motivo de este error, veamos el mensaje de error. El mensaje de error dice "campo 'parent' tiene un tipo incompleto 'testClass'". Este es el mismo error que estamos discutiendo que es un tipo incompleto que no está permitido. Entonces, el sistema ha mostrado este error porque tenemos un tipo incompleto que sabemos que ahora no está permitido. Ahora, resolveremos nuestro error.
Para resolver nuestro error, no hemos hecho nada más. Acabamos de reemplazar el objeto de TestClass de un objeto simple a un puntero. Ahora ejecutaremos nuestro código modificado para observar cómo funciona.
Esta vez, nuestro código se ha ejecutado con éxito sin dar ningún error. No realizamos ninguna operación en nuestro código, por lo que tiene una salida en blanco. La causa del error fue que estábamos tratando de crear una instancia del objeto de una clase que no es posible porque ya lo hemos usado en el constructor. En ese caso, el compilador llama al código de manera recursiva y se vuelve infinito por eso no es posible.
Ejemplo # 02:
Ya discutimos en nuestra parte de introducción que este error puede ser causado por múltiples razones. Nuestro objetivo aquí es discutir tantas razones como sea posible. Entonces, para lograr nuestro objetivo, hemos realizado otro ejemplo simple para que comprenda el error. Para realizar este ejemplo, no hemos creado ninguna clase, estructura o función, ni nada. Simplemente hemos llamado stringstream que se usa para operar con cadenas como calcular el número de palabras, etc.
#incluirEste es el error que recibiremos después de la ejecución de nuestro código, lo que significa que esta vez, además, el código no pudo compilar con éxito. El mensaje de error dice que el agregado std :: stringstream "obj" tiene un tipo incompleto y no se puede definir. Entonces, aquí, el mensaje de error es ligeramente diferente del anterior. Pero el punto aquí es el mismo: que es un "tipo incompleto". Pero, ¿por qué sucedió este problema esta vez cuando no utilizamos una clase?? Intentaremos eliminar el error y al hacerlo descubriremos la razón de su ocurrencia también.
Discutimos anteriormente que este error también ocurre si falta el archivo de encabezado en nuestro código. Entonces, agregaremos un archivo de encabezado que es 'sstream' y veremos qué sucede. Ejecutemos nuestro código.
Esta vez, el código se ejecuta correctamente. La razón del error fue que estábamos usando la función Stringstream, pero no estábamos agregando su biblioteca en la sección de archivos de encabezado. Después de agregar su archivo de encabezado, el código se ha ejecutado correctamente.
Conclusión
En esta guía, discutimos un error que ocurre durante la codificación en el lenguaje C ++: ese error es 'tipo incompleto'. Discutimos la causa del error y las formas de eliminar este error. También realizamos ejemplos que manejan diferentes escenarios para que comprenda el error. Por fin, resumiremos todo el artículo diciendo que debe asegurarse de algunas cosas para evitar obtener tales errores. Esas pocas cosas son que debemos verificar si hemos incluido todos los archivos de encabezado requeridos en nuestro código o no. Verifique que los tipos de datos de los objetos sean correctos o no. En la mayoría de los casos, estamos usando objetos simples, pero nuestro código requiere usar punteros. Si estamos haciendo una declaración directa de cualquier estructura o clase en nuestro código, tenemos que verificar si la definición de esa clase o estructura está disponible en nuestro código o no.