C++ использование объекта абстрактного типа класса не допускается

Есть базовый класс Shape

class Shape{
public:
    virtual void print() = 0;
    virtual double area() = 0;
    virtual double volume() = 0;
};

Унаследованный TwoDShpape

class TwoDShape : public Shape{
public:
    virtual void print() = 0;
    virtual double area()=0;
};

Унаследованный Circle

class circle : public TwoDShape {
    int radius;
public:
    void print() {
        cout << "It's a circe. Radius: " << radius << endl;
    }

    circle(int _radius) : radius(_radius) {}

    double area() {
        return 3.14 * radius * radius;
    }
};

Но при создании объекта в main возникает ошибка Е0322 использование объекта абстрактного типа класса circle не допускается.


Ответы (1 шт):

Автор решения: Mikhailo

Конкретный класс не должен иметь ни одной абстрактной функции-члена, т.е. должен переопределять их все.

print и area вы переопрделили, а volume остался абстрактным, а значит, ваш Circle - тоже абстрактный, и работать с ним непосредственно нельзя.

→ Ссылка