代码之家  ›  专栏  ›  技术社区  ›  kjagiello

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

  •  0
  • kjagiello  · 技术社区  · 14 年前
    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 回复  |  直到 14 年前
        1
  •  1
  •   Andres    14 年前

    据我所见,您没有在类定义下面的代码中执行任何多态性。

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

        2
  •  5
  •   anon    14 年前

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

        3
  •  0
  •   kennytm    14 年前

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