从基类方法调用子类虚方法

时间:2010-01-15 12:30:45

标签: c++ methods polymorphism virtual

class A
{
public:
    virtual void
        doSomething(void)
    {}

    void
        doStuff(void)
    {
        doSomething();
    }
};

class B : public A
{
public:
    void
        doSomething(void)
    {
        // do some stuff here
    }
};

B * b = new B;
b->doStuff();

它给了我分段错误。我究竟做错了什么?它应该在我看来很好用!

3 个答案:

答案 0 :(得分:5)

在我纠正语法错误并添加了main()函数之后,它为我编译和执行没有任何问题。尝试发布导致问题的REAL代码,并重新考虑代码格式。

答案 1 :(得分:1)

据我所知,你在类定义的代码中没有做任何多态。

b->doStuff()应该调用B类的方法。如果你想在B座A-> doSomething内打电话,你可以使用A:: doSomething

答案 2 :(得分:0)

:class A之后你不应该有public A ...