c ++多态 - 使用基指针访问派生函数

时间:2012-03-13 17:06:07

标签: c++ inheritance polymorphism

有什么办法可以让我做以下工作,还是有办法解决?我一定错过了什么。

class base
{
public:
    int someInt;
    virtual void someFunction(){}
};

class derived : public base
{
public:
    void someFunction(){}
    void anotherFunction(){}
};

int main (int argc, char * const argv[]) {

    base* aBasePointer = new derived;

    aBasePointer->anotherFunction();

    delete aBasePointer

    return 0;
}

3 个答案:

答案 0 :(得分:7)

使用dynamic_cast<> 向下转换指向派生类的指针(不要忘记测试结果)。

e.g

if ((derived* p = dynamic_cast<derived*>(aBasePointer)))
{
  // p is of type derived.
  p->anotherFunction();
}

答案 1 :(得分:1)

Nim建议会起作用,但如果你正在进行垂头丧气,你几乎肯定会遇到设计问题。如果你解释一下你想要达到的目标,我们可以建议一个更好的选择。

答案 2 :(得分:-2)

这将有效

int main (int argc, char * const argv[]) {

    derived* aDerivedPointer = new derived;

    aDerivedPointer->anotherFunction();

    delete aDerivedPointer

    return 0;
}

除此之外,您需要提供有关您要完成的内容的更多信息。