2009-07-16 138 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? */ 
} 

回答

29
pBase->Base::foo() 
7

你可以做到這一點通過範圍解析操作::

事情是這樣的:

pBase->Base::foo() 
10

上述兩個反應是正確的...但要小心,如果你需要這樣做,也許你有一個關於概念或設計的大問題...

+2

你說得對:從本質上講,這意味着你需要兩種方法。 – xtofl 2009-07-16 09:03:18

相關問題