Sono abbastanza nuovo in C ++, quindi tendo a progettare con molti Java-ismi mentre sto imparando. Ad ogni modo, in Java, se avessi una classe con un metodo di "ricerca" che restituisse un oggetto T
da un Collection< T >
che corrisponde a un parametro specifico, restituirei quell'oggetto e se l'oggetto non fosse trovato nella raccolta, tornerei null
. Quindi nella mia funzione di chiamata vorrei solo controllareif(tResult != null) { ... }
In C ++, sto scoprendo che non posso restituire un null
valore se l'oggetto non esiste. Voglio solo restituire un "indicatore" di tipo T che notifica alla funzione chiamante che non è stato trovato alcun oggetto. Non voglio fare un'eccezione perché non è davvero una circostanza eccezionale.
Questo è l'aspetto del mio codice in questo momento:
class Node {
Attr& getAttribute(const string& attribute_name) const {
//search collection
//if found at i
return attributes[i];
//if not found
return NULL; // what should this be?
}
private:
vector<Attr> attributes;
}
Come posso cambiarlo in modo da poter dare quel tipo di pennarello?
std::find(first, last, value)
restituiscelast
se nessun elemento corrisponde.