6
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440

在 VS2008 中编译此代码时,我在上述行出现错误。在 VC6 中它编译得很好。

错误 C2440:“=”:无法从“const wchar_t *”转换为“_TCHAR *”

似乎是什么问题,我该如何解决?

4

4 回答 4

7

尝试将其转换为

strGroupName = (_TCHAR*)_tcschr(strTempName, 92);

在我看来,VS2008 对类型转换更加严格,并且在某些情况下不会自动执行它们。

于 2009-06-16T05:40:38.077 回答
7
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));

这是因为您使用的函数的变体有一个 const _TCHAR* 作为输入并返回一个 const _TCHAR*。

另一种变体是将strTempName 声明为_TCHAR*,而不是const _TCHAR*。在这种情况下,使用具有 _TCHAR* 参数并返回 _TCHAR* 值的变体函数。

于 2009-06-16T06:17:41.557 回答
2

_tcschr正在返回一个 const 指针。因此,返回值应该是const _TCHAR* strGroupName = NULL;如果无法将 strGroupName 更改为 const 指针,则将两个指针都声明为非常量指针。

于 2009-06-16T05:45:14.673 回答
2

strGroupName也应该是指向const.

const _TCHAR* strGroupName = _tcschr(strTempName, 92);

在调用初始化它之前无需声明它。

于 2009-06-16T09:18:49.110 回答