class A{public: void setAny(QString){ //... }};class B : public A {private: void setAny(){ QString str = "any"; setAny(str); }};
class B : public A {private: void setAny(){ QString str = "any"; A::setAny(str); }};
B val; val.setAny("any");
Как правило, самым понятным решением является использование в производном классе только открытых членов его базового класса. Например: void Manager::print () const { Employer::print (); // печать информации о сотруднике cout<<level; // печать информации, относящейся только к менеджеру } Обратите внимание, что должен использоваться оператор ::, потому что print () была замещена в Manager. Такое повторное использование имен является типичным.
using A::setAny;
Функции, объявленные в различных областях видимости (не пространствах имен), не являются перегруженными. Например: void f[in t); void g () { void f (double); /(/); // вызывается f (double) } Ясно, что f(int) была бы идеальным соответствием для/(/), но в данной области види- мости находится только f (double).
(static_cast <A &> (val)).setAny("any");
((A &) val).setAny("any");