
Este artículo se centra en los errores de ambigüedad de cout en el lenguaje de programación C++. La ambigüedad ocurre cuando el compilador no puede determinar qué método u operador usar en diferentes tareas. A veces usamos la misma función de parámetro con el mismo espacio de nombres y luego definimos cout en ambos casos. Cuando ejecutamos el programa, el compilador generará un error cout ambiguo porque el compilador no comprende el significado de la visualización de este código. La ambigüedad de Cout ocurre cuando hay un conflicto entre múltiples declaraciones de un espacio de nombres o función definida dentro de un programa.
Ejemplo 1:
Este es un ejemplo de un error de ambigüedad de cout que ocurre principalmente en la programación en C++. Aquí veremos cómo el compilador genera errores ambiguos en cout cuando usamos múltiples espacios de nombres. El fragmento de código para este ejemplo es el siguiente:
espacio de nombres computadora portátil {
blanco anexo() {
estándar::kut «Este es el espacio de nombres de la computadora portátil» estándar::endel;
}
}
espacio de nombres móvil {
blanco anexo() {
estándar::kut «Este es un espacio de nombres móvil» estándar::endel;
}
}
entero principal() {
usar espacio de nombres computadora portátil;
usar espacio de nombres móvil;
anexo();
devolver 0;
}
Aquí utilizamos un programa con dos espacios de nombres definidos según nuestras necesidades. Queremos mostrar una cadena en la pantalla. El resultado de este código se adjunta a continuación:

Cuando se ejecuta el código, se generará un error sobre la condición ambigua de cout. Este error se produce porque el compilador no obtiene información explícita del usuario al leer el código del programa. Usamos múltiples declaraciones de espacios de nombres en nuestro código. A lo largo del código, solo utilizamos el método «mostrar» para mostrar el resultado en la pantalla. El compilador no sabe qué método de visualización está asociado con qué espacio de nombres. Necesitamos hacer que el código sea simple y claro para que el compilador pueda entender fácilmente los pasos sin que el código sea ambiguo.
La forma de resolver este error es llamar al método del espacio de nombres relevante en la función principal para que el compilador lo comprenda mejor. Especificamos explícitamente qué método de espacio de nombres llamar en la parte de ejecución principal.
espacio de nombres computadora portátil {
blanco anexo() {
estándar::kut «Este es el espacio de nombres de la computadora portátil» estándar::endel;
}
}
espacio de nombres móvil {
blanco anexo() {
estándar::kut «Este es un espacio de nombres móvil» estándar::endel;
}
}
entero principal() {
usar espacio de nombres computadora portátil;
usar espacio de nombres móvil;
computadora portátil::anexo();
devolver 0;
}
Aquí podemos conectar el método display() al espacio de nombres «laptop» en la función principal, como se muestra en la captura de pantalla anterior. Ahora, ejecuta el programa. El resultado se muestra en la ventana de la consola.


Ejemplo 2:
Esta situación está relacionada con el error cout ambiguamente en C++. Los errores se muestran cuando el compilador no comprende el flujo de ejecución. A continuación se adjunta un fragmento de código para este ejemplo:
espacio de nombres lenguaje c {
blanco Imprimir(entero I) {
estándar::kut «Espacio de nombres del lenguaje C:» I estándar::endel;
}
}
espacio de nombres Java {
blanco Imprimir(entero j) {
estándar::kut «Espacio de nombres del lenguaje Java:» j estándar::endel;
}
}
usar espacio de nombres lenguaje c;
usar espacio de nombres Java;
entero principal() {
Imprimir(5);
devolver 0;
}
En este código, definimos todos los encabezados de biblioteca requeridos. Creamos dos espacios de nombres para diferentes propósitos. En el espacio de nombres «Clanguage», definimos un método de «impresión» que obtiene un valor entero del usuario. En la función «imprimir», queremos mostrar el valor pasado por el usuario en la pantalla de la consola. Usamos la secuencia «cout» en nuestro código para mostrar el resultado deseado. Después de eso, definimos otro espacio de nombres llamado «Java».
En este espacio de nombres «Java», volvemos a utilizar el método «imprimir» para mostrar el valor pasado por el usuario mediante «cout». Llamamos a estos dos espacios de nombres en la función principal para obtener el resultado deseado en la ventana de la consola C++. En la función «principal», llamamos a la función sobrecargada «print()» para mostrar el valor pasado en la pantalla de la consola.
Haga clic en la opción «Ejecutar» en el menú principal y seleccione la opción «Compilar y ejecutar». Se produce un error de ambigüedad al ejecutar este código. Adjunto la captura de pantalla del error de la siguiente manera:


Este error indica que el compilador está confundido acerca de la función print() sobrecargada que se llama. El error se encuentra en la línea 19 «print (5)». El compilador no sabe a qué espacio de nombres pertenece esta función sobrecargada. Los principiantes suelen caer en este error.
Solucionemos este error que en realidad no es complicado. Los errores ambiguos son fáciles de corregir. Tenemos que especificar el espacio de nombres de la función sobrecargada en la función «principal» para que sea visible y entendida por el compilador. En este programa, agregamos «java::print(5)» al código existente de la siguiente manera:
espacio de nombres lenguaje c {
blanco Imprimir(entero I) {
estándar::kut «Espacio de nombres del lenguaje C:» I estándar::endel;
}
}
espacio de nombres Java {
blanco Imprimir(entero j) {
estándar::kut «Espacio de nombres del lenguaje Java:» j estándar::endel;
}
}
usar espacio de nombres lenguaje c;
usar espacio de nombres Java;
entero principal() {
Java::Imprimir(5);
devolver 0;
}
Ahora, el programa se ejecuta perfectamente sin errores de cout ambiguos y muestra el resultado en la pantalla de la consola. El resultado de este programa se adjunta a continuación:


Ejemplo 3:
Este es el último ejemplo relacionado con errores que surgen de preguntas poco claras. El compilador no puede obtener el resultado correcto. Para facilitar la comprensión del usuario, adjunte un fragmento de código de este ejemplo:
Aquí definimos las bibliotecas requeridas. A continuación, definimos un espacio de nombres que contiene las categorías de cadenas que queremos mostrar en la ventana de la consola. Llamamos a este espacio de nombres definido en la función «principal» usando la variable «c». Después de eso, usamos el objeto de espacio de nombres para llamar al método print(). Después de la llamada al método, volvemos a mostrar la cadena en la pantalla de la consola. La salida debe ser cadenas y mostrarse en la pantalla de la consola. Cuando ejecutamos este código, ocurre el siguiente error:
usar espacio de nombres estándar;
espacio de nombres mi espacio de nombres {
clase kut {
gente:
blanco Imprimir() {
kut «Cálculo personalizado» estándar::endel;
}
};
}
entero principal() {
mi espacio de nombres::kut C;
C.Imprimir();
kut «¡Hola Mundo!» estándar::endel;
devolver 0;
}
El compilador no seleccionó la declaración cout para mostrar datos en la pantalla de la consola. El compilador no puede entender el espacio de nombres que pertenece a la declaración cout y genera un error. La solución a este error es agregar un objeto de espacio de nombres con una declaración cout para mejorar la legibilidad y comprensión por parte del compilador. Agregue «std::» a la declaración cout y ejecute el código. El siguiente resultado aparece en la pantalla de la consola:


en conclusión
Aquí podemos decir que mostrar el resultado en la pantalla de la consola también genera un error, que no es un error de sintaxis ni un error de lógica. La mayoría de las veces, los usuarios escriben código que se siente bien, pero el compilador no puede entenderlo. El compilador es ambiguo acerca de la entrada. Por lo tanto, aclare cada paso de codificación utilizando el espacio de nombres y la sintaxis correctos para evitar errores en el lenguaje de programación C++. Los pasos necesarios para resolver este problema son el uso de calificadores explícitos, la prevención de conflictos de espacios de nombres y la garantía de que se reconozca la función u objeto previsto.









