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


5 принят

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

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

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


_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,

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

4

Ответов: 4


5 принят

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

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

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


_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,
Похожие вопросы