bob*_*lex 6 c++ porting visual-c++-6 visual-studio-2008
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
Run Code Online (Sandbox Code Playgroud)
在VS2008中编译此代码时,我在上面的行中收到错误.在VC6中它编译得很好.
错误C2440:'=':无法从'const wchar_t*'转换为'_TCHAR*'
什么似乎是问题,我该如何解决?
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
Run Code Online (Sandbox Code Playgroud)
这是因为您正在使用的函数的变体具有const _TCHAR*作为输入并返回const _TCHAR*.
另一个变体是将strTempName声明为_TCHAR*,而不是const _TCHAR*.在这种情况下,使用具有_TCHAR*参数并返回_TCHAR*值的变量函数.
尝试将其投射为
strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
Run Code Online (Sandbox Code Playgroud)
在我看来VS2008对类型转换有一点严格,在某些情况下不会自动执行.