2011-12-02 22 views
0

パブリック関数を使用してクラスからプライベート変数にアクセスしようとしました。cプライベート変数アクセス中に2248エラーが発生しました

class myCls : public CFormView 
{ 
private: 
CString pvtMem; 

public: 
CString getPvtmem() { return pvtMem; } 
} 

私はこのようなものでした:

myCls *lmyCls = new myCls() ; 
CString *lPvtMem = lmyCls->getPvtmem(); 

を私は、私はプライベートからパブリックにpvtMemを変更し、エラーC2248 を得ました。 しかし私は同じエラーで終わった。 オブジェクトを公開してから直接pvtMemにアクセスしようとしました。 しかし、dintはうまくいくようです。 私は

myCls lmyCls; 
CString lPvtMem = lmyCls.pvtMem ; 

コンパイラが何を好きされていない:( だけでなく、myClsは、私は 私の呼び出し元のクラスにインクルードファイルBatchDlg.hに定義されているようなヒット曲のすべての種類を行った。 私はのためのクラス参照を追加しましたクラスを呼び出すことで、クラスmyClsのような最後のヒット。

+0

編集のためのPhonon –

+0

完全なコンパイラエラーを投稿できますか? – hmjd

答えて

0

あなたの最初の例では、「のCString」を返しますが、それが「のCString *」(ポインタ)を割り当てる。

クラスを呼び出している2番目の例では'演算子=()メソッド(代入演算子)。 "l PvtMem "は元の変数ではなく変数のコピーを変更します。

試してみてください。

CString *getPvtmem() { return &pvtMem; } 

CString *lPvtMem = lMyCls.getPvtmem(); 

今関数はプライベートメンバへのポインタを返し、割り当てがCStringのクラスへのポインタにあります。 lPvtMemを変更すると、クラス内のオブジェクトが変更されます。

関連する問題