class Base{
public:
void func(){
// something
}
};
class Derived : public Base{
public:
void func(){
Base::func(); // just use the base class name
}
};
Хотя я предполагаю, что это не то, что вы хотите, и вы хотите универсальный доступ для каждого класса?Я не знаю прямого решения, но вы всегда можете typedef
ваш непосредственный базовый класс:
class Derived : public Base{
typedef Base super; // typedef accordingly in every class
public:
void func(){
super::func();
}
};
Или даже иметь промежуточный класс только для typedef, если вы действительно хотите ..
template<class Base>
struct AddSuper : public Base {
protected:
typedef Base super;
};
class Derived : public AddSuper<Base> {
public:
void func(){
super::func();
}
};
Обратите внимание, что вы не должны забывать повторно вводить def в каждом производном классе, иначе вы получите дыры в вашей цепочке вызовов.
Один недостаток: вся конструкция разрушается несколькими базовыми классами.: /