J'ai donc une conversion plutôt tumultueuse en C++ de Java/C#. Même si j'ai l'impression de comprendre la plupart des bases, il y a de gros trous béants dans ma compréhension.C++ et renvoyer un null - ce qui fonctionnait en Java ne fonctionne pas en C++
Par exemple, considérons la fonction suivante:
Fruit&
FruitBasket::getFruitByName(std::string fruitName)
{
std::map<std::string,Fruit>::iterator it = _fruitInTheBascit.find(fruitName);
if(it != _fruitInTheBascit.end())
{
return (*it).second;
}
else
{
//I would so love to just return null here
}
}
Où _fruitsInTheBascit
est un std::map<std::string,Fruit>
. Si je demande getFruitByName("kumquat")
vous savez qu'il ne va pas être là - qui mange des kumquats? Mais je ne veux pas que mon programme plante. Que devrait-on faire dans ces cas?
P.S. parlez-moi de toute autre stupidité que je n'ai pas déjà identifiée.
Pourquoi ne pas simplement mettre 'namespace std'? Allez-vous utiliser un autre espace de noms ou quelque chose? –
@thyrgle Beaucoup de gens préfèrent écrire explicitement l'espace de noms –
@thyrgle: "Pourquoi ne pas simplement utiliser l'espace de noms std" Probablement parce qu'il tirera * tout * de std ::, ce qui n'est pas une bonne idée. Vraiment, en utilisant typedefs ou "en utilisant std :: map;" au lieu de "using namespace std;" est beaucoup plus élégant ... – SigTerm