class Base
{
protected:
virtual void show()
{
// Do some stuff.
}
};
class Derived : public Base
{
protected:
virtual void show()
{
// Do some stuff.
}
};
class Derived_2 : public Derived
{
protected:
virtual void show()
{
this->show(); // error: Base::show() is in accessible
show(); // error: Base::show() is in accessible
Derived::show(); // error: Base::show() is in accessible
}
};
В приведенном выше случае вызов функции виртуального базового класса (переопределен в производных классах) дает ошибку.Почему я не могу вызвать функцию защищенного виртуального базового класса в переопределенной функции производного класса?
Выглядит хорошо для меня (хотя ваш стек переполнится). Каков ваш компилятор? – Bathsheba
Он работает [отлично отлично] (http://ideone.com/GtVImL). – molbdnilo
Вы уверены, что ваше наследство (в вашем фактическом коде) является общедоступным, а не частным? – AndyG