Вопрос

_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 указатель, то объявите оба указателя как неконстантные указатели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top