Comment puis-je retourner un Pointeur Null dans une fonction C++

Je suis actuellement en train de travailler sur un morceau de code qui va chercher dans un vecteur de type Personne (dont j'ai défini dans le code et de s'afficher si nécessaire). Si elle trouve la personne, il retourne leur nom. C'est actuellement en train de travailler, mais si il ne trouve pas la personne, il est censé retourner un pointeur Null. Le problème est, je ne peux pas comprendre comment le faire retourner un pointeur Null! On ne conserve que soit le plantage du programme à chaque fois.

Code:

Person* lookForName(vector<Person*> names, string input)
{
    string searchName = input;
    string foundName;
    for (int i = 0; i < names.size(); i++) {
        Person* p = names[i];
        if (p->getName() == input) {
            p->getName();
            return p; //This works fine. No problems here
            break; 
        } else {
            //Not working Person* p = NULL; <---Here is where the error is happening
            return p;
        }
    }
}
  • Juste retour " 0 " (zéro). C'est la représentation d'un pointeur null en C++.
  • nullptr serait mieux, mais sérieusement, utilisez std::find_if et, de préférence, un std::vector<Person> sans le pointeur.
  • Oh, et aussi que vous n'étiez pas à l'initialisation de P dans presque tous les cas, il aurait une valeur != 0. Rappelez-vous que C++ n'est pas l'initialiser des variables automatiquement.
  • Je le vois en cours d'initialisation.
  • Vous avez une grave erreur de logique ici - cette boucle ne sera jamais exécuter plus d'une fois, chaque branche de la if retourne.
  • Merci pour toutes ces idées! Je suis d'essayer d'utiliser std::find_if mais vais avoir quelques erreurs de compilation. Je vais continuer à bien!

InformationsquelleAutor Silmarilos | 2013-08-24