Ich bin ziemlich neu in C ++, daher neige ich dazu, während des Lernens mit vielen Java-Ismen zu entwerfen. Wenn ich in Java eine Klasse mit einer Suchmethode hätte, die ein Objekt Tvon einem Collection< T >zurückgibt, das einem bestimmten Parameter entspricht, würde ich dieses Objekt zurückgeben, und wenn das Objekt nicht in der Auflistung gefunden würde, würde ich zurückkehren null. Dann würde ich in meiner aufrufenden Funktion einfach nachsehenif(tResult != null) { ... }
In C ++ stelle ich fest, dass ich keinen nullWert zurückgeben kann, wenn das Objekt nicht vorhanden ist. Ich möchte nur einen 'Indikator' vom Typ T zurückgeben, der die aufrufende Funktion benachrichtigt, dass kein Objekt gefunden wurde. Ich möchte keine Ausnahme machen, weil es nicht wirklich ein außergewöhnlicher Umstand ist.
So sieht mein Code jetzt aus:
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;
}
Wie kann ich es ändern, damit ich diese Art von Marker geben kann?
std::find(first, last, value)Gibt beispielsweise zurück,lastwenn kein Element übereinstimmt.