2011-02-13 3 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

... это не было переопределено в каком-либо производном классе. –

+1

Спасибо, @ Наваз. работал отлично. – CHID

Смежные вопросы