Невозможно преобразовать из 'const wchar_t *' в '_TCHAR *'

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

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440

Я получаю сообщение об ошибке в приведенной выше строке при компиляции этого кода в VS2008. В VC6 он отлично компилируется.

Ошибка C2440: '=': невозможно преобразовать из ' strGroupName = ( _TCHAR *) _tcschr ( strTempName , 92 ); wchar_t * 'to' _TCHAR * '

Какая проблема и как ее исправить?

c++,visual-studio-2008,porting,vc6,

4

Ответов: 4


5 принят

Попробуйте сделать это как

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

Кажется мне, что VS2008 получил немного более строгий тип приведения и не будет автоматически делать их в некоторых случаях.


6
_tcschr

Это связано с тем, что вариант используемой функции имеет const _TCHAR * в качестве входных данных и возвращает константу _TCHAR *.

Другим вариантом было бы иметь strTempName, объявленное как _TCHAR *, а не как const _TCHAR *. В этом случае используется вариантная функция, имеющая параметр _TCHAR * и возвращающая значение _TCHAR *.


2

const _TCHAR* strGroupName = NULL;возвращает указатель const. Следовательно, возвращаемое значение должно быть: strGroupNameЕсли невозможно изменить const на указатель const, тогда объявите оба указателя неконстантными указателями.


1

strGroupNameтакже должен быть указателем на const.

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

Не нужно объявлять его до вызова для его инициализации.

C ++, визуально-студия-2008, портирование, VC6,
Похожие вопросы