наследование абстрактного класса - PullRequest
1 голос
/ 13 февраля 2011

У меня есть базовый класс, который является абстрактным.Я наследую новый класс от абстрактной базы, в которой я не смог создать экземпляр объекта.Причина, по которой компилятор говорит, что

cannot allocate an object of abstract type

Есть ли способ преодолеть это.

1 Ответ

10 голосов
/ 13 февраля 2011

не может выделить объект абстрактного типа

Это означает, что вы не реализовали все функции pure virtual в производном классе. Итак, сначала реализуйте все чисто виртуальные функции, затем создайте экземпляр этого класса.

Вы не можете создавать экземпляры класса, который имеет даже одну pure virtual функцию!

Помните, виртуальные функции pure - это те, которым присваивается ноль ( C ++ Virtual / Pure Virtual Explained ), например

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

Здесь только g() - это чисто виртуальная функция! Это делает sample абстрактный класс , и если производный класс не определяет g(), он также станет абстрактным классом. Вы не можете создать экземпляр какого-либо из этих классов, так как оба они являются абстрактными!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...