'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이 const _tchar*가 아닌 _tchar*로 선언하는 것입니다. 이 경우 _TCHAR* 매개 변수를 갖고 _TCHAR* 값을 반환하는 변형 함수가 사용됩니다.
strGroupName
또한 포인터 여야합니다 const
.
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
초기화를 요청할 때까지 선언 할 필요가 없습니다.
_tcschr
Const 포인터를 반환하고 있습니다. 따라서 반환 값은이어야합니다 const _TCHAR* strGroupName = NULL;
strgroupName을 const 포인터로 변경할 수 없다면 두 포인터를 두 가지 포인터를 비 초보 포인터로 선언하십시오.
제휴하지 않습니다 StackOverflow