Impossible de convertir de 'const wchar_t *' _TCHAR *'
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
J'obtiens une erreur à la ligne ci-dessus lors de la compilation de ce code dans VS2008. En VC6 il compile bien.
Error C2440: '=' : impossible de convertir de
'const wchar_t *' _TCHAR *'
Ce qui semble être le problème et comment puis-je résoudre ce problème?
OriginalL'auteur bobbyalex | 2009-06-16
Vous devez vous connecter pour publier un commentaire.
Essayer de casting comme
Me semble que VS2008 a un peu plus stricte sur le type de jette, et ne sera pas automatiquement faire dans certains cas.
Utilisation const_cast.
OriginalL'auteur Jack B Nimble
C'est parce que la variante de la fonction que vous utilisez a un const _TCHAR* en entrée et renvoie un const _TCHAR*.
Une autre variante serait d'avoir strTempName déclaré que _TCHAR*, et non pas comme const _TCHAR*. Dans ce cas, la variante de la fonction ayant un _TCHAR* paramètre et retournant une _TCHAR* valeur est utilisée.
Cette version est mieux: il vous permet d'être précis sur ce que le cast est pour, c'est à dire qu'il n'est pas de la conversion de certains sans rapport avec le type, c'est juste en retrait de la const.
À l'aide de const_cast opération vous permettra de facilement trouver de la const coulée dans le code par une simple recherche. Je ne recommande const casting, sauf si cela est vraiment nécessaire. La deuxième solution (faire strTempName non-const) est mon préféré, parce qu'il n'implique pas davantage constness en train de changer. Btw, est une raison pour laquelle vous avez déclaré strTempName comme const?
OriginalL'auteur Cătălin Pitiș
_tcschr
est de retourner un pointeur const. D'où la valeur de retour doit êtreconst _TCHAR* strGroupName = NULL;
Si il n'est pas possible de changer strGroupName à un pointeur const puis de déclarer à la fois les pointeurs non-const pointeurs.Puis faire strTempName & strGroupName à la fois non-const.
+1, y compris le commentaire que les deux peuvent être non-const (peut-être l'ajouter à la réponse?)
OriginalL'auteur Naveen
strGroupName
devrait également être un pointeur versconst
.Pas besoin de le déclarer jusqu'à l'appel de l'initialiser.
OriginalL'auteur James Hopkin