Учитывая абстрактный базовый класс с защищенным членом, как я могу предоставить доступ для чтения только к производным классам?Как сделать член readonly для производных классов?
Чтобы проиллюстрировать мое намерение, я предоставляю минимальный пример. Это базовый класс.
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
элемент, так как он должен быть изменяемым базовым классом. Как я могу произвести предполагаемое поведение?
Кроме того, чтобы сделать его постоянным, вы не можете. –
Не могли бы вы сделать это частным и просто предоставить защищенный метод геттера? –
Вы должны определить конструктор для инициализации 'Readonly'. –