Я просто попадаю в производные классы, и я работаю над известным классом Shape
. Shape
- базовый класс, тогда у меня есть три производных класса: Circle
, Rectangle
и Square
. Square
- производный класс Rectangle
. Я думаю, мне нужно передать аргументы из конструкторов производного класса в конструктор базового класса, но я точно не знаю, как это сделать. Я хочу установить размеры фигур при их создании. Вот то, что у меня есть для базового класса и одного производного класса:Передача аргументов конструктору суперкласса
Shape(double w = 0, double h = 0, double r = 0)
{
width = w;
height = h;
radius = r;
}
class Rectangle : public Shape
{
public:
Rectangle(double w, double h) : Shape(double w, double h)
{
width = w;
height = h;
}
double area();
void display();
};
Я здесь на правильном пути? Я получаю следующую ошибку компилятора: expected primary expression before "double"
, в каждом из производных конструкторов.
Для вашей ошибки компилятора, вы должны удалить 'double's в «Shape (double w, double h)» после двоеточия, поскольку вы на самом деле вызываете конструктор базового класса. – Yang
Кроме того, рассмотрите возможность использования инициализаторов-членов для инициализации элементов Shape, а не присваивания, т. Е. Конструктор Shape выглядит так: 'Shape (double w = 0, ...): width (w), height (h), радиус (r) {} '. –
Что такое радиус на общей форме? Возможно, вам нужно переосмыслить свой класс. –