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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top