Не удается преобразовать из 'const wchar_t *' в '_TCHAR *'
-
14-09-2019 - |
Вопрос
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
Я получаю ошибку в приведенной выше строке при компиляции этого кода в VS2008.В VC6 он отлично компилируется.
Ошибка C2440:'=' :не удается преобразовать из 'const wchar_t *' в '_TCHAR *'
В чем, по-видимому, проблема и как мне это исправить?
Решение
Попробуйте использовать его как
strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
Мне кажется, что VS2008 стал немного более строгим в отношении приведения типов и в некоторых случаях не будет автоматически выполнять их.
Другие советы
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
Это связано с тем, что вариант используемой вами функции имеет const _TCHAR * в качестве входных данных и возвращает const _TCHAR * .
Другим вариантом было бы объявить strTempName как _TCHAR *, а не как const _TCHAR * .В этом случае используется функция variant, имеющая параметр _TCHAR* и возвращающая значение _TCHAR*.
strGroupName
также должен быть указатель на const
.
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
Нет необходимости объявлять его до тех пор, пока не будет выполнен вызов для его инициализации.
_tcschr
возвращает постоянный указатель.Следовательно, возвращаемое значение должно быть const _TCHAR* strGroupName = NULL;
Если невозможно изменить strGroupName на const указатель, то объявите оба указателя как неконстантные указатели.