C ++错误:无法将字段声明为抽象类型

时间:2009-10-27 10:30:07

标签: c++

情况就是这样:

class Base {  
    virtual void methodA() = 0;  
    virtual void methodB() = 0;  
};

class Base_A : public Base {  
    void methodA(); 
    void methodB();  
};

class Base_B : public Base {  
    void methodA();  
    void methodB();  
};

class MyClass {
    private:  
        Base * b;   
};  

编译时会显示错误消息:

error: cannot declare field MyClass::b to be of abstract type because the following virtual functions are pure within Base:
Base::methodA()
Base::methodB()

如何解决这个问题?

更新 它现在编译。我不知道我改变了什么

2 个答案:

答案 0 :(得分:4)

您的代码似乎正确且完美。

你的基类是抽象的,所以你不能创建它的对象, 但你可以肯定地声明它的指针。

所以你可能写过Base b而不是Base * b,请检查它。

答案 1 :(得分:2)

您的代码段在我的计算机上编译得很好。您确定使用的是Base* b,即。指针类型而不是Base b