2009-07-16 2 views
13
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? */ 
} 

ответ

7

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

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

pBase->Base::foo() 
10

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

+2

Вы правы: по существу это означает, что вам нужны два метода. – xtofl

Смежные вопросы