Não é possível converter de 'const wchar_t *' para '_tchar *'
-
14-09-2019 - |
Pergunta
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
Recebo um erro na linha acima ao compilar este código no vs2008. No VC6, ele compila bem.
Erro C2440: '=': Não é possível converter de 'const wchar_t *' para '_tchar *'
Qual parece ser o problema e como faço para corrigi -lo?
Solução
Tente lançá -lo como
strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
Parece -me que o VS2008 ficou um pouco mais rigoroso sobre elencos de tipo e não os fará automaticamente em alguns casos.
Outras dicas
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
Isso ocorre porque a variante da função que você está usando possui um const _tchar* como entrada e retorna um const _tchar*.
Outra variante seria que o strTempName declarado como _tchar*, e não como const _tchar*. Nesse caso, a função variante com um parâmetro _tchar* e retornando um valor _tchar* é usada.
strGroupName
também deve ser um ponteiro para const
.
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
Não há necessidade de declará -lo até a chamada para inicializá -lo.
_tcschr
está retornando um ponteiro const. Portanto, o valor de retorno deve ser const _TCHAR* strGroupName = NULL;
Se não for possível alterar o StrGroupName para um ponteiro const, declare os dois ponteiros como indicadores que não são consagrados.