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

risposta

29
pBase->Base::foo() 
7

lo si può fare attraverso il campo di applicazione operatore di risoluzione ::

Qualcosa di simile a questo:

pBase->Base::foo() 
10

Entrambe le risposte di cui sopra sono corretti ... Ma fai attenzione, se hai bisogno di farlo, forse hai un grosso problema sulla concezione o sul design ...

+2

Hai ragione: essenzialmente questo implica che hai bisogno di due metodi. – xtofl