Возвращая «пустую ссылку» в C ++?

В динамически типизированных языках, таких как JavaScript или PHP, я часто выполняю такие функции, как:

<code>function getSomething(name) {
    if (content_[name]) return content_[name];
    return null; // doesn't exist
}
</code>

Я возвращаю объект, если он существует илиnull если не.

Что было бы эквивалентно в C ++ с использованием ссылок? Есть ли рекомендуемый шаблон в целом? Я видел некоторые рамки, имеющиеisNull() Метод для этого:

<code>SomeResource SomeClass::getSomething(std::string name) {
    if (content_.find(name) != content_.end()) return content_[name];
    SomeResource output; // Create a "null" resource
    return output;
}
</code>

Затем вызывающая сторона проверяет ресурс таким образом:

<code>SomeResource r = obj.getSomething("something");
if (!r.isNull()) {
    // OK
} else {
    // NOT OK
}
</code>

Однако необходимость реализации такого рода магического метода для каждого класса кажется тяжелой. Также не представляется очевидным, когда внутреннее состояние объекта должно быть установлено из "null". чтобы "не ноль".

Есть ли альтернатива этому шаблону? Я уже знаю, что это можно сделать с помощью указателей, но мне интересно, как / если это можно сделать с помощью ссылок. Или я должен отказаться от возврата "null"? объекты в C ++ и использовать какой-то специфичный для C ++ шаблон? Любое предложение о том, как это сделать, будет оценено.

Ответы на вопрос(7)

Ваш ответ на вопрос