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 - тоже абстрактный, и работать с ним непосредственно нельзя.