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

Trả lời

29
pBase->Base::foo() 
7

Bạn có thể làm điều đó thông qua điều hành giải quyết phạm vi ::

Something như thế này:

pBase->Base::foo() 
10

Cả hai phản ứng trên đúng ... Nhưng hãy cẩn thận, nếu bạn cần phải làm điều đó, có thể bạn có một vấn đề lớn về quan niệm hoặc thiết kế ...

+2

Bạn nói đúng: về cơ bản điều này ngụ ý bạn cần hai phương pháp. – xtofl

Các vấn đề liên quan