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?
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?
solutions possibles:
if(!newName.empty())
if(newName.size()) // If size = 0 so no caracters in string
if(newName == "") // Empty string
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())
....
donc si je veux mettre une chaîne vide, je fais newName = newName.empty(); ? – Jjang
@ user1334761 'newName ==" "' ou 'newName.empty(). – juanchopanza
'.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) –
ps aussi essayé si (newName) et a obtenu cette erreur: – Jjang
expression conditionnelle de type « const std :: string 'est illégal – Jjang
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