「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*を返すためです。
別のバリアントは、const _tchar*としてではなく、_tchar*としてstrtempnameを宣言することです。この場合、_tchar*パラメーターを持つバリアント関数と_tchar*値の返却が使用されます。
strGroupName
また、ポインターである必要があります const
.
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
初期化する呼び出しまで宣言する必要はありません。
_tcschr
constポインターを返しています。したがって、返品値は必要です const _TCHAR* strGroupName = NULL;
strgroupNameをconstポインターに変更することができない場合は、両方のポインターを非コンストポインターとして宣言します。
所属していません StackOverflow