Je suis assez nouveau en C ++, donc j'ai tendance à concevoir avec beaucoup de Java-isms pendant que j'apprends. Quoi qu'il en soit, en Java, si j'avais une classe avec une méthode de recherche qui renverrait un objet à T
partir d'un Collection< T >
qui correspond à un paramètre spécifique, je retournerais cet objet et si l'objet n'était pas trouvé dans la collection, je le retournerais null
. Ensuite, dans ma fonction d'appel, je vérifierais simplementif(tResult != null) { ... }
En C ++, je découvre que je ne peux pas renvoyer une null
valeur si l'objet n'existe pas. Je veux juste renvoyer un «indicateur» de type T qui notifie à la fonction appelante qu'aucun objet n'a été trouvé. Je ne veux pas lancer d'exception car ce n'est pas vraiment une circonstance exceptionnelle.
Voici à quoi ressemble mon code en ce moment:
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;
}
Comment puis-je le changer pour pouvoir donner ce type de marqueur?
std::find(first, last, value)
renvoielast
si aucun élément ne correspond.