_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
在VS2008中编译此代码时,我在上面的行中收到错误。在VC6中编译很好。
错误C2440:'=':无法转换 'const wchar_t *'到'_TCHAR *'
什么似乎是问题,我该如何解决?
答案 0 :(得分:6)
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
这是因为你正在使用的函数的变体有一个const _TCHAR *作为输入并返回一个const _TCHAR *。
另一种变体是将strTempName声明为_TCHAR *,而不是const _TCHAR *。在这种情况下,使用具有_TCHAR *参数并返回_TCHAR *值的variant函数。
答案 1 :(得分:5)
尝试将其转换为
strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
在我看来,VS2008对类型转换有一点严格要求,并且在某些情况下不会自动执行。
答案 2 :(得分:2)
_tcschr
正在返回一个const指针。因此返回值应为const _TCHAR* strGroupName = NULL;
如果无法将strGroupName更改为const指针,则将两个指针都声明为非常量指针。
答案 3 :(得分:1)
strGroupName
也应该是const
的指针。
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
在调用初始化之前无需声明它。