2011-12-02 31 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将修改类中的对象。