質問

_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ポインターに変更することができない場合は、両方のポインターを非コンストポインターとして宣言します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top