¿Cuál es la redefinición de la clase en C ++ y cómo solucionarla??

¿Cuál es la redefinición de la clase en C ++ y cómo solucionarla??

Cuando un programador intenta definir una clase con el mismo nombre que ya existe, se conoce como "Redefinición de la clase". El programa puede comportarse inesperadamente como resultado de esto, ya que no estará claro a qué clase se llama, lo que podría causar problemas de compilación.

Causas de redefinición de errores de clases

Para asegurarse de que el software se ejecute sin un problema técnico, es crucial comprender qué desencadena las redefiniciones de clase y cómo resolverlas.

1: La misma clase definió más de una vez

Cuando una clase se declara más de una vez en un archivo fuente o archivo de encabezado, debe redefinirse. Varias definiciones de la misma clase resultan de esto, lo que dificulta que el compilador elija qué definición usar. Al intentar vincular archivos de objetos, esto puede conducir a problemas de compilación como "Símbolo duplicado" o errores de enlazador.

2: redefinir la misma clase con comandos y valores similares

Debido a que los programadores generalmente redefinen la misma clase con comandos y valores similares, el redefinición de la clase Se produce un error de C ++. Como resultado, el sistema no puede distinguir entre los dos scripts, lo que lleva a la redefinición de variables en numerosas líneas de código C ++.

3: Construir una clase en numerosos archivos

Además, los desarrolladores pueden encontrarse con problemas de redefinición de clase mientras construyen una clase en numerosos archivos, lo que podría resultar en algunos errores de actividades repetidas. Por ejemplo, dado que el sistema reconoce sus modificaciones, la solicitud de C ++ para el constructor de redefinición debe contener valores y etiquetas distintivos.

Invencemos en la redefinición de errores de clase en un programa C ++, que se muestra a continuación:

#incluir
usando el espacio de nombres STD;
clase clase1
público:
datos int;
vacío func ()
cout << "Hello from Func!" << endl;

;
clase clase1
público:
datos int;
vacío func ()
cout << "Hello again from Func!" << endl;

;
int main ()
Clase1 obj;
obj.Datos = 50;
obj.Func ();
regresar 0;

En el código anterior, recibimos el error 'Redefinición de la clase Class1'. De acuerdo con este mensaje de error, estamos intentando redefinir la clase Clase 1 Uso del mismo nombre, la misma colección de miembros de datos y el mismo conjunto de funciones de miembros.

Producción

Para superar la redefinición de la clase en C ++, debe eliminar una clase con el mismo nombre o darle otro nombre.

Código corregido

Aquí, hemos eliminado la clase con el mismo nombre para obtener la salida deseada en la consola.

#incluir
usando el espacio de nombres STD;
clase clase1
público:
datos int;
vacío func ()
cout << "Hello from Func!" << endl;

;
int main ()
Clase1 obj;
obj.Datos = 50;
obj.Func ();
regresar 0;

La clase Clase 1 se define por el código, que también incluye las funciones del miembro func y data (). El programa crea un objeto de tipo clase1, establece el valor de los datos e invoca el método func ().

Producción

Cómo corregir el error 'redefinición de la clase'

Para arreglar el redefinición de la clase En C ++, se pueden usar algunos enfoques.

1: identificar dónde se está redefiniendo la clase

Encontrar las áreas donde se está redefiniendo la clase es el primer paso. Para hacer esto, busque el nombre de clase en el código del programa. El programador puede elegir cómo abordar el problema una vez que se ha determinado la ubicación del problema. Renombrar la clase con un sufijo o prefijo distintivo es un enfoque del problema. Otra opción es combinar las dos clases en una sola clase que tiene un solo nombre e incorpora cada característica de las dos clases originales.

2: Hacer cambios en el código del programa

El programador debe alterar el código del programa para aplicar el remedio. Esto puede implicar cambiar el nombre de la clase, actualizar cualquier referencia del programa a la clase y reemplazar cualquier código que fuera exclusivo de la clase original. El software debe probarse una vez que se hayan realizado las modificaciones para asegurarse de que funcione correctamente.

3: Use guardias de encabezado

El uso de los guardias de encabezado es otro método preferido para evitar que los archivos de encabezado se incluyan más de una vez en un solo archivo o aplicación. Los protectores de encabezados son directivas preprocesador que garantizan que el archivo de encabezado solo se incluye una vez, sin importar con qué frecuencia aparezca en el código fuente.

4: Use la palabra clave extern

Otra estrategia es declarar la clase en un archivo de encabezado y definirla en un solo archivo fuente utilizando la palabra clave extern. Como resultado, se evita la redefinición de errores porque solo hay una definición de la clase.

5: Uso de espacios de nombres

Usar espacios de nombres es otra solución al redefinición de la clase Error en C++. El uso de espacios de nombres permite a los programadores unificar clases y métodos similares bajo un solo nombre. Al hacerlo, los conflictos de nombres se reducen y se llama la clase correcta. El programador puede evitar conflictos de nombres declarando cada clase en un espacio de nombres único.

Conclusión

El redefinición de una clase En la programación de C ++ es un error frecuente que se puede evitar fácilmente identificando la clase, haciendo cambios en el código, utilizando guardias de encabezado, la palabra clave extern y espacios de nombres. Estos enfoques ayudan a garantizar que la clase tenga una definición única, evitando la compilación y vinculación de problemas.