Я досить новачок у C ++, тому я, як правило, займаюся дизайном з великою кількістю Java-ізмів. У будь-якому випадку, в Java, якби у мене був клас із методом 'search', який повертав би об'єкт 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
якщо жоден елемент не збігається.