2011-12-02 5 views
0

공용 함수를 사용하여 클래스에서 개인 변수에 액세스하려고했습니다. 그때는 비공개에서 공개로 pvtMem을 변경c 개인 변수 액세스 중 2248 오류

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

하지만 오류 C2248 을 가지고 :

class myCls : public CFormView 
{ 
private: 
CString pvtMem; 

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

나는 이런 일을했다. 하지만 같은 오류가 발생했습니다. public 이래 객체를 사용하여 직접 pvtMem에 액세스하려고했습니다. 그러나 dint는 작동하는 것 같습니다. 내가 아니라 아무 :( 를 좋아하지 않는, myCls는 내가 내 호출 클래스를 #include하는 파일 BatchDlg.h에 정의되어

컴파일러
myCls lmyCls; 
CString lPvtMem = lmyCls.pvtMem ; 

같은 히트의 모든 종류를했다. 나는에 대한 클래스 참조를 추가 않았다 클래스를 호출의 클래스 myCls 같은 마지막 히트.

+0

편집 용 Phonon –

+0

전체 컴파일러 오류를 게시 할 수 있습니까? – hmjd

답변

0

첫 번째 예에서, 당신은 "CString을"를 반환하지만 "CString을 *"(포인터).

두 번째 예에서 당신이 클래스를 호출하기 위해 할당 'operator =() 메서드 (대입 연산자). "l PvtMem "은 원래 변수가 아닌 변수의 복사본을 수정합니다.

시도 :

CString *getPvtmem() { return &pvtMem; } 

CString *lPvtMem = lMyCls.getPvtmem(); 

지금 함수가 private 멤버에 대한 포인터를 반환하고 할당은 CString을 클래스에 대한 포인터이다. 이제 lPvtMem을 수정하면 클래스 내부의 객체가 수정됩니다.