보호 된 멤버가있는 추상 기본 클래스가 있으면 파생 클래스에만 읽기 액세스를 제공하려면 어떻게해야합니까?파생 클래스에 대해 읽기 전용으로 멤버를 만드는 방법은 무엇입니까?
필자의 의도를 설명하기 위해 필자는 최소한의 예를 제시합니다. 이것은 기본 클래스입니다.
class Base
{
public:
virtual ~Base() = 0;
void Foo()
{
Readonly = 42;
}
protected:
int Readonly; // insert the magic here
};
이것은 파생 클래스입니다. 이 기본 클래스에 의해 수정 될 필요가 있기 때문에
class Derived : public Base
{
void Function()
{
cout << Readonly << endl; // this should work
Readonly = 43; // but this should fail
}
};
는 불행하게도 나는
const
멤버를 사용할 수 없습니다. 의도 한 행동을 어떻게 일으킬 수 있습니까?
상수로 만드는 것 외에는 할 수 없습니다. –
비공개로 설정하고 보호 된 getter 메소드 만 제공 할 수 있습니까? –
'Readonly'를 초기화하기 위해 생성자를 정의해야합니다. –