2

これが私の試みとエラーです:

コード:

 TCHAR* pszDisplayName_I; //$I .. file
 TCHAR *pDollar = NULL;
 pszDisplayName_I = ((CString)saSursa.GetAt(i)).GetBuffer();  
 pDollar = _tcsrchr(pszDisplayName_I,'$');  
 *(pDollar + 1) = 'I';

エラー:

 error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxcoll.h    

getBuffter 関数については、次のことがわかりました。

CString オブジェクトの内部文字バッファーへのポインターを返します。返された LPTSTR は const ではないため、CString の内容を直接変更できます。 それで大丈夫です。しかし、getAt(0) 関数については、次のように書かれています。

CObject* GetAt(
 INT_PTR nIndex 
) const;

const というものがありますが、これを回避する方法はありますか? CStringArray から変更可能な CString 要素を取得する方法。

4

1 に答える 1

2

これを正常にコンパイルしました。GetAt() を使用する代わりに、[] 演算子を使用しました。

CStringArray saTest;
saTest.Add(_T("Test"));
TCHAR* pTest = saTest[0].GetBuffer();
saTest[0].ReleaseBuffer();
于 2012-08-31T15:17:58.873 に答える