Question

_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440

Je reçois une erreur à la ligne ci-dessus lors de la compilation ce code dans VS2008. En VC6 il compile très bien.

  

Erreur C2440: '=': ne peut pas convertir   'Const wchar_t *' à '_TCHAR *'

Ce qui semble être le problème et comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Essayez coulée comme

strGroupName = (_TCHAR*)_tcschr(strTempName, 92);

me semble que VS2008 a obtenu un peu plus stricte sur Conversions de type, et ne le fera pas automatiquement les dans certains cas.

Autres conseils

strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));

En effet, la variante de la fonction que vous utilisez a un const _TCHAR * en entrée et retourne un const _TCHAR *.

Une autre variante serait d'avoir strTempName déclaré _TCHAR *, et non comme const _TCHAR *. Dans ce cas, la fonction de la variante ayant un paramètre _TCHAR * et retourner une valeur _TCHAR * est utilisé.

strGroupName devrait également être un pointeur vers const.

const _TCHAR* strGroupName = _tcschr(strTempName, 92);

Pas besoin de déclarer que l'appel à l'initialiser.

_tcschr renvoie un pointeur const. D'où la valeur de retour doit être const _TCHAR* strGroupName = NULL; S'il est impossible de changer strGroupName à un pointeur const puis déclarer les pointeurs comme pointeurs non-const.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top