저는 C++ 문제로 고생했습니다. 클래스의 private 가시 영역 안에 자체 참조 객체 포인터가있는 기본 클래스가 있습니다. 이 두 포인터를 초기화하는 기본 클래스의 생성자가 있습니다. 이제 액세스 지정자가 private 인 파생 클래스가 생겼습니다 (저는 기본 클래스의 public 멤버 함수를 private으로 만들고 싶습니다). 이제 파생 된 클래스의 멤버 함수를 통해 기본 클래스의 개인 데이터, 즉 자체 참조 객체 포인터를 가리킬 수있는 객체 포인터를 만들고 싶습니다. 내 코드 :파생 클래스가 개인 멤버 데이터에 액세스하는 방법?
class base{
private:
base *ptr1;
int data;
public:
base(){}
base(int d) { data=d }
};
class derived:private base{
public:
void member()
};
void derived::member()
{
base *temp=new base(val); //val is some integer
temp->ptr1=NULL; //I can't make this happen. To do this I had to declare all the
//private members of the base class public.
}
'private'대신 'protected'를 사용 하시겠습니까? –
'private' 멤버에 대해'protected' getter를 만드시겠습니까? 보통 이러한 솔루션이 필요한 경우 설계에 결함이 있습니다. –
그 중 하나가 작동하지 않습니다. 컴파일러 오류. 그것도 시험해 보았다. 공개적으로 만 액세스 할 수 있습니다. 하지만 코드가 취약해질 수 있습니다. –