не может выделить объект абстрактного типа
Это означает, что вы не реализовали все функции 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()
, он также станет абстрактным классом. Вы не можете создать экземпляр какого-либо из этих классов, так как оба они являются абстрактными!