我对C ++相当陌生,因此在学习时,我倾向于使用许多Java风格进行设计。无论如何,在Java中,如果我有一个带有“搜索”方法的类,该类T
将从Collection< T >
与特定参数匹配的对象中返回一个对象,则将返回该对象,如果在集合中未找到该对象,则将返回null
。然后在我的调用函数中,我只是检查if(tResult != null) { ... }
在C ++中,我发现null
如果对象不存在,则无法返回值。我只想返回类型T的“指示器”,通知调用函数没有找到对象。我不想抛出异常,因为这并不是真正的例外情况。
这是我的代码现在的样子:
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;
}
我该如何更改它才能给出这种标记?
std::find(first, last, value)
返回last
。