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 T
von 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 null
Wert 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,last
wenn kein Element übereinstimmt.