Retornando uma referência “NULL” em C ++?

Em linguagens dinamicamente tipadas como JavaScript ou PHP, geralmente faço funções como:

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

Devolvo um objeto, se existir ounull se não.

Qual seria o equivalente em C ++ usando referências? Existe algum padrão recomendado em geral? Eu vi alguns quadros tendo umisNull() método para este fim:

<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>

Então, o chamador verificaria o recurso dessa maneira:

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

No entanto, ter que implementar esse tipo de método mágico para cada classe parece pesado. Também não parece óbvio quando o estado interno do objeto deve ser definido de "null" para "not null".

Existe alguma alternativa a esse padrão? Eu já sei que isso pode ser feito usando ponteiros, mas eu estou querendo saber como / se isso pode ser feito com referências. Ou devo desistir de retornar objetos "null" em C ++ e usar algum padrão específico para C ++? Qualquer sugestão sobre a maneira correta de fazer isso seria apreciada.

questionAnswers(7)

yourAnswerToTheQuestion