0

使用 C++,我有

struct Base {
    virtual void stuff(/*base stuff*/);
};

struct Derived : public Base {
    void stuff(/*derived stuff*/); 
};

void function1(Derived& obj){
   obj.stuff(); 
}

在这种情况下,function1 将使用 Derived 的 do() 函数。如果在 function1 中,我想调用 Base 类的 do() 函数呢?如果我将 function1 称为 as ,它会起作用 function1(dynamic_cast<Base*>(derived_obj_ptr))吗?

4

1 回答 1

7

在更正代码中的大量错误之后,这确实是可以实现的:

#include <iostream>

class Base {
public:
    virtual void foo() { std::cout << "Base\n"; }
};

class Derived : public Base {
public:
    void foo() { std::cout << "Derived\n"; }
};

void function1(Derived *p) {
   p->Base::foo();  // <<<<< Here is the magic >>>>>
}

int main() {
    Derived d;
    function1(&d);
}

输出:

Base

(见http://ideone.com/FKFj8

于 2012-04-11T00:23:21.847 回答