No se puede convertir de 'const wchar_t *' a '_TCHAR *'
-
14-09-2019 - |
Pregunta
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
Me sale un error en la línea anterior al compilar este código en VS2008.En VC6 compila bien.
El Error C2440:'=' :no se puede convertir de 'const wchar_t *' a '_TCHAR *'
Lo que parece ser el problema y cómo puedo solucionarlo?
Solución
Prueba a transmitir como
strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
Me parece que VS2008 tiene un poco más estricta del tipo de yesos, y no les hará automáticamente en algunos casos.
Otros consejos
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
Esto es debido a que la variante de la función que está utilizando tiene una _TCHAR const * como entrada y devuelve un _TCHAR const *.
Otra variante sería tener strTempName declarado como _TCHAR *, y no _TCHAR como const *. En este caso, la función de variante que tiene un _TCHAR * se utiliza parámetro y devolver un valor _TCHAR *.
strGroupName
también debe ser un puntero a const
.
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
No hay necesidad de declarar hasta que la llamada para inicializar la misma.
_tcschr
devuelve un puntero constante. De ahí el valor de retorno debe ser const _TCHAR* strGroupName = NULL;
Si no es posible cambiar strGroupName a un puntero constante declarará ambos punteros como los punteros no const.