Ecco il mio codice:"controllo raggiunge fine del non-vuoto funzione" avvertimento in Eclipse C++, ma nessun errore di compilazione o di run-time
Composer& Database::GetComposer (string in_last_name)
{
for (int i = 0; i < next_slot_; i++)
{
if (composers_[i].last_name() == in_last_name)
return composers_[i];
}
}
L'idea è quella di iterare su un array di oggetti compositore e ritorno un riferimento all'oggetto il cui campo last_name corrisponde a "in_last_name." Capisco cosa mi dice l'avviso, ovvero che è possibile che la funzione non restituisca nulla (se, ad esempio, l'utente fornisce un cognome non valido). La mia domanda è, come posso evitare questo? Ho provato ad aggiungere "return 0" e "return NULL" dopo il ciclo for e non si compilerebbe. Questo metodo dovrebbe generare un'eccezione se non trova nulla?
È necessario generare un'eccezione. –
Gli avvisi sono errori logici nel codice. Correggere tutti gli avvisi (e alzare il livello di avviso fino a (ragionevolmente) possibile) –
Ricevo ancora lo stesso avviso anche con un blocco try/catch che genera un'eccezione standard. – wbr