Я довольно новичок в 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;
}
Как я могу изменить это, чтобы я мог дать такой маркер?