2011-12-02 30 views
0

我試圖從一個使用公共函數的類訪問私有變量。在私人變量訪問期間發生2248錯誤

class myCls : public CFormView 
{ 
private: 
CString pvtMem; 

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

我做了這樣的事情:

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

,但我得到了錯誤C2248 後來我改變pvtMem從私有到公有。 但我結束了相同的錯誤。 我試圖直接訪問pvtMem使用對象,因爲它的公開。 但dint似乎工作。 我做了種種命中像

myCls lmyCls; 
CString lPvtMem = lmyCls.pvtMem ; 

編譯器不喜歡什麼:( 好,myCls是我在 執行#included我的呼喚類文件BatchDlg.h定義。 我沒有添加對類的引用最後撞到像類myCls在調用類。

+0

感謝Phonon的編輯 –

+0

你能發佈完整的編譯器錯誤嗎? – hmjd

回答

0

在你的第一個例子,你回來「的CString」,但其指定爲「CString的*」(指針)。

在第二個例子中,你是調用類'operator =()方法(賦值運算符)改變「l PvtMem「將修改它的變量的副本,而不是原始變量。

嘗試:

CString *getPvtmem() { return &pvtMem; } 

CString *lPvtMem = lMyCls.getPvtmem(); 

現在該函數返回一個指向私有成員和分配是一個指向CString類。現在修改lPvtMem將修改類中的對象。