Pour faire de votre fonction de sécurité, vous devez gérer correctement toutes les valeurs de pointeur (oui, la valeur null est une valeur valide). Soit d'ajouter une case d'un certain type:
if(!vo)return;//or:if(!vo)throw std::invalid_argument("cannot be null, plz");
Ou faire de votre fonction fondamentalement correcte en utilisant une référence:
void f(vector<object>& vo)//*must* reference a valid object, null is no option{
vo.push_back(object());//no need to dereference, no pointers; a reference}
Maintenant, il incombe à l'appelant de la fonction pour vous fournir une référence valide.
+1 pour 4 secondes plus rapide. Personnellement, je suggère de référence de la première, mais +1 pour montrer à la fois.
Déréférencer le pointeur:
Remarque c'est un concept de base de la langue, vous pouvez profiter de la lecture d'un bon livre.
Note ce a une lacune flagrante:
Pour faire de votre fonction de sécurité, vous devez gérer correctement toutes les valeurs de pointeur (oui, la valeur null est une valeur valide). Soit d'ajouter une case d'un certain type:
Ou faire de votre fonction fondamentalement correcte en utilisant une référence:
Maintenant, il incombe à l'appelant de la fonction pour vous fournir une référence valide.
Personnellement, je suggère de référence de la première, mais +1 pour montrer à la fois.
OriginalL'auteur GManNickG