¿Devolviendo una "referencia NULA" en C ++?

En lenguajes de tipo dinámico como JavaScript o PHP, a menudo hago funciones como:

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

Devuelvo un objeto si existe onull si no.

¿Cuál sería el equivalente en C ++ usando referencias? ¿Hay algún patrón recomendado en general? Vi algunos marcos teniendo unaisNull() Método para este fin:

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

Entonces la persona que llama verificará el recurso de esa manera:

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

Sin embargo, tener que implementar este tipo de método mágico para cada clase parece pesado. Además, no parece obvio cuando el estado interno del objeto debe establecerse desde "nulo" a "no nulo".

¿Hay alguna alternativa a este patrón? Ya sé que se puede hacer usando punteros, pero me pregunto cómo / si se puede hacer con referencias. ¿O debería renunciar a devolver objetos "nulos" en C ++ y utilizar algún patrón específico de C ++? Cualquier sugerencia sobre la forma correcta de hacerlo sería apreciada.

Respuestas a la pregunta(7)

Su respuesta a la pregunta