Il controllo C ++ raggiunge la fine della funzione non vuota

0

Ho una funzione, che assomiglia a questa:

ClassA& ClassB::Check(int x){
    //some calculations in a loop, if a condition is met, a reference to a ClassA object is given
}

Ricevo l'errore "controllo raggiunge la fine della funzione non vuota". Per quanto ne so, è perché, la funzione non restituirà sempre qualcosa, ho ragione?

La funzione sta ottenendo le coordinate del mouse e il controllo degli oggetti strega è stato selezionato. Se qualcosa è stato selezionato, quindi fai qualcosa, altrimenti non fare nulla.

Quale sarebbe l'opzione migliore per risolvere questo? Devo creare e restituire un oggetto con qualche tipo di flag da controllare?

    
posta MustSeeMelons 08.10.2013 - 16:51
fonte

2 risposte

8

In questo caso non dovresti restituire un riferimento, ma piuttosto un puntatore. Nel caso in cui non ci sia alcun oggetto da restituire, dovresti restituire 0. Un'altra opzione da considerare è quella di limitarti a restituire un riferimento, ma se non puoi, per qualche motivo, lanciare un'eccezione.

    
risposta data 08.10.2013 - 16:56
fonte
2

Seguendo i principi SOLID (in particolare la "S" = singola responsabilità), puoi considera di dividere questo in 2 funzioni:

  • uno che esegue il controllo e restituisce un bool per segnalare se il controllo ha avuto esito positivo oppure no, e
  • uno per richiedere il riferimento all'oggetto classA .

Attualmente, la tua funzione attuale ha due responsabilità (controllare e restituire un oggetto correlato).

Oppure rinomina la tua funzione in GetSelectedObject , nel qual caso la prima parte della risposta di @ JoelFan va bene. Questo cambia il punto di vista sulla responsabilità di quella funzione.

    
risposta data 08.10.2013 - 17:08
fonte

Leggi altre domande sui tag