class Base { public: virtual void foo() {} }; class Derived: public Base { public: virtual void foo() {} }; int main() { Base *pBase = NULL; Base objBase; Derived objDerived; pBase = &objDerived; pBase->foo(); /*Here Derived class foo will be called, but i want this to call a base class foo. Is there any way for this to happen? i.e. through casting or something? */ }
pBase->Base::foo()
Оба ответа верны ... Но будьте осторожны, если вам нужно сделать это, возможно, у вас есть большие проблемы с концепцией или дизайном ...
Вы можете сделать это через оператор разрешения области действия ::
::
Примерно так: