2015-07-23 2 views
2

Je ne sais pas vraiment ce qui se passe ici, mais quand j'utilise mon code, j'obtiens une erreur grossière en essayant de comparer deux chaînes.La comparaison de chaînes échoue C++

bool remove_entry(addlist& list, std::string fname, std::string lname){ 
    bool more = true; 
    bool failed = false; 
    contact* traversal_ptr = entry; 
    contact* trailer = entry; 

    while (more && !failed){ 
     if (traversal_ptr = NULL){ 
      failed = true; 
     } 
     else if (traversal_ptr->last_name != lname || traversal_ptr->first_name != fname){ 
      trailer = traversal_ptr; 
      traversal_ptr = traversal_ptr->next; 
     } 
     else { 
      trailer->next = traversal_ptr->next; 
      delete traversal_ptr; 
     } 
    } 
    return failed; 
} 

Je reçois un échec dans la ligne de retour du bloc suivant de xstring:

int compare(const _Myt& _Right) const _NOEXCEPT 
    { // compare [0, _Mysize) with _Right 
    return (compare(0, this->_Mysize, _Right._Myptr(), _Right.size())); 
    } 

Je ne sais pas pourquoi cela se passe. Je sais que tout ce qui est mis en place est une chaîne. Il ne soulève même pas d'exception, alors je ne suis pas sûr de ce qu'il faut faire. Il semble que ce soit une petite chose qui me manque. Toute aide serait grandement appréciée.

+2

Définir un point d'arrêt, déboguer –

+0

J'ai défini un point d'arrêt. Ce bloc xstring est à quelle distance je l'ai, et je suis assez nouveau pour le codage, et je ne suis pas sûr de savoir comment faire plus que de voir où le code ne peut pas s'exécuter. –

+0

Vérifiez la pile d'appels –

Répondre

3
if (traversal_ptr = NULL){ 

devrait être

if (traversal_ptr == nullptr){ 

En outre, comme vous l'avez dit dans votre commentaire, vous avez besoin d'ajouter more = false au bloc else, de mettre fin à la boucle.