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 = const_cast<_TCHAR*>( _tcschr(strTempName, 92));

これは、使用している関数のバリアントが入力として const _TCHAR* を持ち、const _TCHAR* を返すためです。

もう 1 つの方法は、strTempName を const _TCHAR* ではなく _TCHAR* として宣言することです。この場合、_TCHAR* パラメータを持ち、_TCHAR* 値を返すバリアント関数が使用されます。

于 2009-06-16T06:17:41.557 に答える
7

としてキャストしてみてください

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

VS2008 では型キャストがもう少し厳密になり、場合によっては自動的にキャストされないように思えます。

于 2009-06-16T05:40:38.077 に答える
2

strGroupNameへのポインタでもある必要がありますconst

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

初期化の呼び出しまで宣言する必要はありません。

于 2009-06-16T09:18:49.110 に答える
2

_tcschrconst ポインタを返しています。したがって、戻り値は次のようconst _TCHAR* strGroupName = NULL;になります。strGroupName を const ポインターに変更できない場合は、両方のポインターを非 const ポインターとして宣言します。

于 2009-06-16T05:45:14.673 に答える