2012-04-15 2 views
0

Pourquoi ai-je une erreur pour cette ligne?mettre une chaîne en condition (C++)

void Student::SetName(const string newName) 
{ 
if(newName!=NULL) //could not deduce template argument for 'const T1 *' from 'int' 
{ 
    ..... 
} 

Des idées?

+0

ps aussi essayé si (newName) et a obtenu cette erreur: – Jjang

+0

expression conditionnelle de type « const std :: string 'est illégal – Jjang

+0

Si vous êtes après une chaîne vide, essayez 'if (nouveauNom ==" ")', ou Bo 'if (! nouveauNom.empty())' Il n'y a pas de vraie comparaison de vérification pour la chaîne que je connais bien que. – chris

Répondre

2

solutions possibles:

if(!newName.empty()) 

if(newName.size()) // If size = 0 so no caracters in string 

if(newName == "") // Empty string 
1

Ce n'est pas C#, une chaîne en C++ n'est pas un type Nullable. Seuls les pointeurs peuvent être NULL, vous ne pouvez pas définir une variable sans lui affecter une valeur de base en C++, sauf si vous utilisez un pointeur.

Votre code devrait probablement ressembler à ceci:

if(!newName.empty()) 
    .... 
+0

donc si je veux mettre une chaîne vide, je fais newName = newName.empty(); ? – Jjang

+0

@ user1334761 'newName ==" "' ou 'newName.empty(). – juanchopanza

+0

'.empty' est une fonction booléenne. Il ne renvoie pas de chaîne, il retourne s'il est vide ou non. Il ne modifie pas non plus le contenu de la chaîne (@juanchopanza) –