Каковы правила для подкласса доступа к защищенным объектам-членам?Я думал, что понял их, но мой код не согласен.
У меня есть базовый класс, определяемый как
class Datum {
public:
Datum(Datum *r, Datum *l) : right(r), left(l) {}
protected:
Datum *right, *left;
};
Я подкласс Datum следующим образом:
class Column: public Datum
{
public:
Column(Datum *r, Datum *l, string n, int s): Datum(r,l), name(n), size(s) {}
void cover() {
right->left = left;
left->right = right;
}
protected:
string name;
int size;
};
Когда яПри компиляции, используя G ++ v.4.5.1, я получаю сообщения об ошибках, указывающие на две строки в обложке:
error: Datum* Datum::right is protected
error: within this context
error: Datum* Datum::left is protected
error: within this context
Очевидно, что сделав раздел общедоступным, ошибки исчезнут.Почему они там, когда раздел защищен?