Как вызвать метод базового класса с помощью указателя базового класса, указывающего на производный класс

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? */
}

Ответы

Ответ 1

pBase->Base::foo()

Ответ 2

Оба вышеприведенных ответа правильны... Но будьте осторожны, если вам нужно это сделать, возможно, у вас есть большая проблема с концепцией или дизайном...

Ответ 3

Вы можете сделать это с помощью оператора разрешения области ::

Что-то вроде этого:

pBase->Base::foo()