Коротке питання по ООП в C++
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
У
class X {
public:
int a;
//...
};
class Y2: protected X {};
class Z2: public Y2 {void f(Y2*);};
void Z2::f(Y2* py2) {
X* px;
px = py2; // ошибка: X - защищенный базовый класс для Y2,
// а Z2 - производной класс от Y2, но нам не известно,
// что py2 принадлежит к Z2 или
// как Y2::X используется в обьектах, не принадлежащих к Z2
py2->a = 7; // ошибка: Z2 не знает, как Y2::a используется в обьектах,
// не принадлежащих к Z2
}
На інструкції py2-> a = 7; мій компілятор (GNU GCC Compiler), як і очікувалось, видає помилку. А на px = py2; — чомусь ні. 0_o Як ви можете це пояснити? Наперед дякую.: -)
11 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів