Я новичок в С++, поэтому я стараюсь разрабатывать множество Java-измов во время обучения. В любом случае, на Java, если бы у меня был класс с методом поиска, который возвращал бы объект T
из Collection< T >
, который соответствовал конкретному параметру, я бы вернул этот объект и если объект не был найден в коллекции, Я вернусь null
. Тогда в моей вызывающей функции я просто проверил бы if(tResult != null) { ... }
В С++ я обнаруживаю, что я не могу вернуть значение 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;
}
Как я могу изменить его, чтобы я мог указать этот маркер?