Errore C ++ Nessun sovraccarico vitale '='

Errore C ++ Nessun sovraccarico vitale '='

Gli errori sono le operazioni che possono essere il risultato del funzionamento anormale di qualsiasi codice. L'errore non può essere rilevato al momento della stesura fino a quando non abbiamo eseguito il codice o viene compilato. Alcuni errori vietano l'esecuzione del codice fino a quando non vengono rimossi. Oggi discuteremo anche di un errore che si verifica anche quando viene compilato il programma, ovvero "Errore: nessuna corrispondenza per" Operator = "". Questo errore può essere causato a causa di motivi come: se abbiamo superato il puntatore in cui la stringa deve essere passata, modificando la variabile costante, ecc. Non è difficile rimuovere l'errore "Nessun problema sovraccarico", ma l'attività principale è comprendere l'errore perché mostra solo l'errore senza alcuna descrizione dell'errore.

Sintassi

Non esiste una tale sintassi predefinita per questo errore perché non fa parte del codice o dell'output è solo un'ambiguità che può essere causata a causa del codice sbagliato. Come possiamo vedere, di seguito è un esempio di come potrebbe essere l'errore.

Errore: nessuna corrispondenza per 'operatore ='

Esempio # 01:

Facciamo un'idea di questo errore e del metodo per risolverlo. Per capirlo meglio, eseguiremo un esempio in cui passeremo i nomi usando gli oggetti alla funzione e quindi li visualizzerà. Includeremo prima il file di intestazione iostream. Dopodiché, dichiarare una classe denominata "My_Object". All'interno del quale, abbiamo dichiarato due variabili di stringa denominate "f_name e" l_name ", il" f_name "che indica il nome del nome della persona in cui" L_name "indica il cognome della persona.

Successivamente, abbiamo dichiarato un costruttore pubblico chiamato "my_object ()" in cui abbiamo assegnato valori null alle variabili "f_name" e "l_name". Successivamente, abbiamo dichiarato un'altra funzione a cui abbiamo superato le variabili del tipo di stringa "FN" e "LN". All'interno di questo, abbiamo chiamato il metodo Name_set (). Quindi, abbiamo dichiarato due funzioni membri "show ()" e "name_set ()". Quando viene chiamata la funzione “show (), visualizzerà insieme i nomi e i cognomi. Mentre, nella funzione membro "set_name ()", abbiamo superato due variabili di stringa del tipo di stringa "FN" e "LN" che abbiamo anche passato al secondo costruttore.

Ora, utilizzando l'operatore di assegnazione di copia della classe my_object, prendiamo un parametro di tipo "my_object". Il compilatore lo dichiara sempre come membro pubblico in linea di qualsiasi classe. All'interno di questo membro, abbiamo assegnato l'SRC.F_name al "f_name" e src.L_Name al "L_NAME" che abbiamo conservato la copia di "F_Name" e "L_NAME". Questo viene passato ai membri della classe my_object. Ora, abbiamo dichiarato un oggetto della classe My_Cobject chiamato "Name1" a cui abbiamo superato due stringhe "Anna" e "Smith" come argomento. Questo chiamerà il costruttore e visualizzerà il nome insieme al cognome.

Successivamente, abbiamo creato un altro oggetto "nome2" e quindi assegnato il nome a quell'oggetto separatamente. Dopo aver passato i valori al costruttore per entrambi gli oggetti, abbiamo chiamato il metodo show () che visualizzerà i nomi per entrambi gli oggetti "nam1" e "name2". Alla fine del codice, abbiamo restituito il valore null ed eseguito il nostro codice.

includere
class my_object
privato:
std :: string f_name, l_name;
pubblico:
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;
restituire *questo;

;
int main (int argc, char ** argv)
My_Object name1 ("Anna", "Smith");
name my_object2;
name2 = ("Anna", "Smith");
nome1.spettacolo();
nome2.spettacolo();
restituzione 0;

Dopo l'esecuzione del nostro codice, abbiamo questo errore che mostra che abbiamo scritto il codice sbagliato sulla riga 24 indicando il tipo di errore che si verifica "Errore: nessuna corrispondenza per" Operator = "". Ora cercheremo di risolvere questo errore.

Per risolvere questo errore, abbiamo più modi per passare i valori al costruttore di qualsiasi classe. Nel primo metodo, assegneremo semplicemente l'oggetto "name1" all'eventuale "nome2" perché abbiamo superato gli stessi valori ad entrambi gli oggetti, quindi non è necessario passarli separatamente. Ora eseguiamo il codice.

int main (int argc, char ** argv)
My_Object name1 ("Anna", "Smith");
name my_object2;
name2 = name1;
nome1.spettacolo();
nome2.spettacolo();

Dopo aver apportato modifiche al codice come mostrato sopra, abbiamo il risultato indicato nello snippet seguente. Abbiamo visualizzato il nome passato al costruttore viene visualizzato correttamente senza alcun errore.

Il secondo metodo per risolvere questo errore è quando dobbiamo passare i valori diversi ad entrambi gli oggetti. Useremo semplicemente il nome di classe insieme ai valori che devono essere passati al costruttore come argomento. Abbiamo superato il nome "Jhone" e il secondo nome "Smith". Quindi, abbiamo eseguito il codice.

int main (int argc, char ** argv)
My_Object name1 ("Anna", "Smith");
name my_object2;
name2 = my_object ("jhone", "Smith");
nome1.spettacolo();
nome2.spettacolo();

Dopo aver eseguito il codice sopra aggiunto, abbiamo l'output come mostrato di seguito. Per l'oggetto "Name1", ha visualizzato il nome "Anna Smith" e per il secondo oggetto "Name2" ha mostrato "Jhone Smith". Ma questa volta il nostro codice ha funzionato correttamente senza errori.

Ora proveremo un altro metodo per eseguire correttamente il nostro codice. Come nei casi di cui sopra, abbiamo tentato di assegnare i valori agli oggetti usando l'operatore di assegnazione. Ma questa volta, passeremo i valori al momento della dichiarazione dell'oggetto. Come possiamo vedere nello snippet di seguito, al momento della dichiarazione di un oggetto "Name1", abbiamo superato i valori come argomento all'oggetto ripetendo lo stesso passaggio per il "nome2". Ora eseguiamo di nuovo il codice.

int main (int argc, char ** argv)
My_Object name1 ("Anna", "Smith");
My_Object Name2 ("Jhone", "Smith");
nome1.spettacolo();
nome2.spettacolo();

Dopo che il codice è stato eseguito anche per questo momento, non abbiamo riscontrato alcun errore, il che significa che ciò ci impedirà anche di avere errori.

Conclusione

Abbiamo brevemente discusso di un errore che possiamo affrontare mentre si lavora su funzioni a cui si accede dalle classi. Abbiamo anche studiato le cause e i metodi per risolvere l'errore "Nessun sovraccarico praticabile". Principalmente questo errore è difficile da capire per i nuovi programmatori, quindi abbiamo cercato di rendere più facile sbarazzarsene implementando esempi e anche con la sua spiegazione.