Dans typées dynamiquement des langages comme le JavaScript ou le PHP, je fais souvent des fonctions telles que:
function getSomething(name) {
if (content_[name]) return content_[name];
return null; // doesn't exist
}
- Je retourner un objet s'il existe ou null
si pas.
Quel serait l'équivalent en C++ à l'aide de références? Est-il un modèle recommandé en général? J'ai vu que certains cadres ayant un isNull()
méthode pour cela:
SomeResource SomeClass::getSomething(std::string name) {
if (content_.find(name) != content_.end()) return content_[name];
SomeResource output; // Create a "null" resource
return output;
}
Ensuite, l'appelant serait de vérifier les ressources de cette façon:
SomeResource r = obj.getSomething("something");
if (!r.isNull()) {
// OK
} else {
// NOT OK
}
Cependant, la nécessité de mettre en œuvre ce type de méthode magique pour chaque classe me semble lourd. Aussi il ne semble pas évident lorsque l'état interne de l'objet doit être défini à partir de "nul" à "not null".
Est-il une alternative à ce modèle? Je sais déjà qu'il peut être fait en utilisant des pointeurs, mais je me demande comment/si cela peut être fait avec des références. Ou devrais-je renoncer à de revenir "null" objets en C++ et utiliser C++-modèle spécifique? Toute suggestion sur la bonne façon de le faire serait appréciée.