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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top