Error de C ++ Sin sobrecarga viable '='

Error de C ++ Sin sobrecarga viable '='

Los errores son las operaciones que pueden ser el resultado del funcionamiento anormal de cualquier código. El error no se puede detectar al momento de escribir hasta que hayamos ejecutado el código o se compilamos. Algunos errores prohíben que el código se ejecute hasta que se eliminen. Hoy, también discutiremos un error que también ocurre cuando el programa se compila, eso es "error: sin coincidencia para 'operador ='". Este error puede ser causado por razones como: si hemos pasado el puntero donde se va a pasar la cadena, modificando la variable constante, etc. No es difícil eliminar el error "no sobrecargado viable", pero la tarea principal es comprender el error porque solo muestra el error sin ninguna descripción del error.

Sintaxis

No existe tal sintaxis predefinida para este error porque no es parte del código o de la salida, es solo una ambigüedad que puede ser causada por el código incorrecto. Como podemos ver, a continuación hay un ejemplo de cómo puede verse el error.

Error: sin coincidencia para 'operador ='

Ejemplo # 01:

Tengamos una idea sobre este error y el método para resolver esto. Para entenderlo mejor, realizaremos un ejemplo en el que vamos a pasar los nombres usando objetos a la función y luego los mostrará. Primero incluiremos el archivo de encabezado iostream. Después de eso, declararemos una clase llamada "my_object". Dentro de los cuales, hemos declarado dos variables de cadena llamadas "f_name y" l_name ", el" f_name "que indica el primer nombre de la persona donde el" l_name "indica el apellido de la persona.

A continuación, hemos declarado un constructor público llamado "my_object ()" en el que asignamos valores nulos a las variables "f_name" y "l_name". Después de eso, declaramos otra función a la que hemos pasado las variables de tipo de cadena "fn" y "ln". Dentro de eso, llamamos al método name_set (). Luego, declaramos dos funciones de miembros "show ()" y "name_set ()". Cuando se llama a la función "show (), mostrará los nombres y apellidos juntos. Mientras que, en la función miembro "set_name ()", pasamos dos variables de cadena del tipo de cadena "FN" y "LN" que también hemos pasado al segundo constructor.

Ahora, usando el operador de asignación de copias de la clase my_object, tomamos un parámetro de tipo "my_object". El compilador siempre lo declara como miembro público en línea de cualquier clase. Dentro de este miembro, hemos asignado el SRC.F_name a la "f_name" y src.L_name al "l_name" que hemos conservado la copia del "f_name" y "l_name". Esto se pasa a los miembros de la clase my_object. Ahora, hemos declarado un objeto de la clase my_cobject llamado "name1" a lo que pasamos dos cuerdas "Anna" y "Smith" como argumento. Esto llamará al constructor y mostrará el primer nombre junto con el apellido.

Después de eso, creamos otro objeto "name2" y luego asignamos el nombre a ese objeto por separado. Después de pasar los valores al constructor para ambos objetos, llamamos al método show () que luego mostrará los nombres de ambos objetos "nam1" y "name2". Al final del código, devolvimos el valor nulo y ejecutamos nuestro código.

incluir
clase my_object
privado:
std :: string f_name, l_name;
público:
my_object () f_name = ""; L_name = "";
my_object (std :: string fn, std :: string ln)
name_set (fn, ln);

void show () std :: cout << "The name is " << F_name << " " << L_name << ".\n";
void name_set (std :: string fn, std :: string ln) f_name = fn; L_name = ln;
my_object & operator = (const my_object & src)
F_name = src.F_name;
L_name = src.L_name;
devolver *esto;

;
int main (int argc, char ** argv)
my_object name1 ("Anna", "Smith");
my_object name2;
nombre2 = ("Anna", "Smith");
nombre1.espectáculo();
nombre2.espectáculo();
regresar 0;

Después de la ejecución de nuestro código, tenemos este error que muestra que hemos escrito el código incorrecto en la línea 24 que indica el tipo de error que se encuentra "Error: sin coincidencia para 'operador ='". Ahora, intentaremos resolver este error.

Para resolver este error, tenemos múltiples formas de pasar los valores al constructor de cualquier clase. En el primer método, simplemente asignaremos el objeto "name1" al "name2" porque hemos pasado los mismos valores a ambos objetos, por lo que no es necesario pasarlos por separado. Ahora ejecutamos el código.

int main (int argc, char ** argv)
my_object name1 ("Anna", "Smith");
my_object name2;
name2 = name1;
nombre1.espectáculo();
nombre2.espectáculo();

Después de hacer cambios en el código como se muestra arriba, tenemos el resultado dado en el fragmento a continuación. Hemos mostrado el nombre pasado al constructor se muestra correctamente sin ningún error.

El segundo método para resolver este error es cuando tenemos que pasar los diferentes valores a ambos objetos. Simplemente usaremos el nombre de clase junto con los valores que se pasarán al constructor como argumento. Pasamos el primer nombre "Jhone" y el segundo nombre "Smith". Luego, ejecutamos el código.

int main (int argc, char ** argv)
my_object name1 ("Anna", "Smith");
my_object name2;
name2 = my_object ("Jhone", "Smith");
nombre1.espectáculo();
nombre2.espectáculo();

Después de ejecutar el código agregado anteriormente, tenemos la salida como se muestra a continuación. Para el objeto "Name1", mostró el nombre "Anna Smith" y para el segundo objeto "Name2" mostró "Jhone Smith". Pero esta vez nuestro código funcionó correctamente sin ningún error en él.

Ahora, intentaremos otro método para ejecutar nuestro código correctamente. Como en los casos anteriores, intentamos asignar los valores a los objetos utilizando el operador de asignación. Pero esta vez, pasaremos los valores en el momento de la declaración del objeto. Como podemos ver en el fragmento a continuación, en el momento de la declaración de un objeto "Name1", pasamos los valores como un argumento al objeto que repite el mismo paso para el "Name2". Ahora, ejecutamos el código una vez más.

int main (int argc, char ** argv)
my_object name1 ("Anna", "Smith");
my_object name2 ("Jhone", "Smith");
nombre1.espectáculo();
nombre2.espectáculo();

Después de ejecutar el código también para este tiempo, no hemos encontrado ningún error, lo que significa que esto también nos impedirá tener algún error.

Conclusión

Hemos discutido brevemente un error que podemos enfrentar mientras trabajamos en funciones a las que se accede desde las clases. También hemos estudiado las causas y los métodos para resolver el error "No sobrecarga viable". La mayoría de este error es difícil de entender para los nuevos programadores, por lo que intentamos que fuera fácil deshacerse de esto implementando ejemplos y también con su explicación.