Errore C ++ nessuna funzione di corrispondenza per la chiamata

Errore C ++ nessuna funzione di corrispondenza per la chiamata
Nessuna funzione di corrispondenza per la chiamata significa quando chiamiamo alcune funzioni, ma l'ID di quella funzione non corrisponde all'argomento della funzione definita. Quindi otteniamo un errore "nessuna funzione di corrispondenza per una chiamata" a c++. Ogni volta che il compilatore afferma che non ci sono metodi di corrispondenza, generalmente indica che il compilatore ha identificato un metodo con il nome identico come se avessimo dato i parametri alla funzione.

Quindi, quando continuiamo a passare il metodo specificato del tipo errato o l'insieme inappropriato di parametri alla funzione. Una definizione di funzione specifica il nome del metodo al compilatore e come invocarlo. L'intero contenuto della funzione viene dichiarato esplicito. In questo articolo, parleremo di come l'errore "nessuna funzione di corrispondenza per una chiamata" appare in c++.

Usa oggetto della classe

In questo scenario, il parametro della funzione non corrisponde durante la chiamata, quindi cercheremo di superare i puntatori in cui sono necessari riferimenti e utilizzare diversi tipi di riferimento di classe nelle chiamate di funzione. Ogni volta che invochiamo la funzione ma la definizione della funzione dell'argomento non viene abbinata, viene sollevato l'errore "nessuna funzione di corrispondenza per chiamata a c ++".

Ora dobbiamo correggere l'errore; A tale scopo, forniamo solo il parametro corrispondente adatto durante la definizione della funzione. Il codice, insieme alla sua descrizione dettagliata, può essere visto sotto.

All'inizio del codice, includeremo la libreria, che viene utilizzata per le funzionalità di input e output. Utilizziamo anche uno spazio dei nomi standard. Quindi abbiamo inizializzato la classe con il nome di "A", e abbiamo specificato il pubblico setValue (). Stiamo passando il parametro del valore con il tipo di dati di numero intero a questa funzione. Abbiamo anche inizializzato un "valore" variabile della classe che ha un tipo di dati interi.

Nella riga successiva, invochiamo un'altra funzione setValue (). Questo metodo contiene il "valore" variabile come argomento. Incrediamo il valore che è stato approvato come argomenti. Quindi chiamiamo la funzione principale () e ci viene data "argc" con tipo di dati interi e punta "argv" del tipo di dati dei caratteri come argomenti. L'argc è il no. dei parametri forniti nel codice dal sistema operativo. L'argv è la raccolta di parametri.

Ora creiamo un oggetto "obj" della classe a.'Invochiamo la funzione Method setValue (). L '"obj" è passato come argomenti. Ma non abbiamo collegato l'oggetto con la classe. Ecco perché quando chiamiamo la funzione setValue (), restituisce un errore perché non abbiamo quella classe in cui invochiamo la funzione setValue (). Nel codice sopra, stiamo passando un oggetto di classe all'interno dell'argomento di chiamata di funzione setValue (), ma se controlliamo la definizione della funzione setValue (), assumiamo il valore dell'argomento di passaggio come numero intero. Per terminare il codice, abbiamo utilizzato il comando "return 0". Qui è possibile verificare l'output del codice sopra indicato.

Otteniamo l'errore "nessuna funzione di corrispondenza per la chiamata a un" dopo aver eseguito il codice sopra menzionato.

Come risolvere questo errore?

Per correggere questo errore durante la chiamata del metodo, dobbiamo fornire parametri corrispondenti adeguati alla funzione. L'altro modo per risolvere questo errore è quello di fare diverse funzioni sovraccarichi hanno parametri diversi. Qui modifichiamo l'argomento della funzione main (). Pertanto, non verrà rimossa la funzione di corrispondenza per la chiamata "a C ++. Il codice, insieme alla sua descrizione dettagliata, può essere visto sotto.

Dopo aver utilizzato lo spazio dei nomi standard, introduciamo il file di intestazione . Abbiamo costruito una classe chiamata "A" e reso pubblica la sua funzione setValue (). Questa funzione riceve il "valore" variabile come parametro, che ha il numero intero del tipo di dati. Abbiamo anche inizializzato una variabile di tipo dati intero chiamato "valore" nella classe. Questa variabile è anche impostata pubblica. La riga successiva chiama un'altra funzione chiamata setValue (). Il 'valore' variabile con intero tipo di dati viene fornito come parametro in questa funzione. Aumentiamo il valore fornito come uno degli input.

Nel passaggio successivo, invochiamo il metodo principale (). All'interno della funzione principale (), forniremo "argc" del tipo di dati interi e "argv" del tipo di dati dei caratteri come argomenti. L'argc mostra il numero di parametri forniti dal sistema operativo nel programma. Il 'argv' è una raccolta di parametri. Ora faremo un oggetto della classe "un" definito "obj."Abbiamo inizializzato il" valore "variabile con il tipo di dati interi. Abbiamo utilizzato il metodo setValue () dell'oggetto e impostato il "valore" come parametri di questa funzione.

Alla fine, aggiungiamo "return 0" per chiudere il programma. Ricorda che dobbiamo inserire gli stessi tipi di dati delle funzioni e dei loro argomenti nella funzione principale (). Quindi abbiamo passato quella funzione al suo oggetto e l'abbiamo restituita. Qui è possibile verificare l'output del codice sopra indicato.

Conclusione

In questo articolo, abbiamo esplorato i motivi per ottenere l'errore "nessuna funzione di corrispondenza per una chiamata" e come risolverlo. Ogni volta che riceviamo questo errore, dobbiamo controllare i parametri dei metodi richiesti e il loro tipo di dati. Commettiamo errori mentre forniamo gli argomenti agli argomenti della funzione. Non corrisponiamo ai parametri della funzione. Potremmo essere tenuti a fornire il parametro abbinato al metodo specificato. Oppure dobbiamo aggiungere una nuova funzione con lo stesso tipo di dati. Dopo aver controllato e aggiunto parametri adeguati alla funzione nel programma, l'errore "nessuna funzione di corrispondenza per una chiamata" verrà risolta.