2011-02-13 209 views
1

我有一个抽象的基类。我从抽象基础继承了一个新类,我无法实例化对象。编译器告诉其原因是抽象类的继承

cannot allocate an object of abstract type

有什么办法来克服这一点。

回答

10

不能分配抽象类型

的对象这表示你已经不是在派生类中实现所有virtual功能。所以首先实现所有的纯虚函数,然后创建这个类的实例。

你不能创建类的实例,它甚至有一个单独的virtual函数!

记住,虚函数是那些零分配,如

class sample 
{ 
public: 
    virtual void f(); //virtual function 
    virtual void g()=0; //pure virtual function 
}; 

这里只g()是纯虚函数!这使得sampleabstract class,如果派生类没有定义g(),它也将成为一个抽象类。你不能创建任何这些类的实例,因为它们都是抽象的!

+0

...在某些派生类中尚未被覆盖。 – 2011-02-13 18:31:27

+1

谢谢你,@Nawaz。工作得很好。 – CHID 2011-02-13 18:33:02