У вас есть опечатка в конце длинной строки, есть дополнительная {}
.Удалите их, и он должен скомпилироваться.
IMO было бы лучше, если бы в стиле кода была функция, возвращающая такой прямоугольник, а не упаковывающая эту логику в конструктор.Пример:
class Rectangle
{
const double length;
const double width;
public:
Rectangle(double length, double width): length(length), width(width) {}
void outputRectangle(ostream&) const;
};
Rectangle make_rectangle(const vector<string> &internal)
{
double length = 0.0, width = 0.0;
if ( internal.size() > 2 )
width = std::stod(internal[2]);
if ( internal.size() > 1 )
length = std::stod(internal[1]);
return { length, width };
}
Я бы также предложил, чтобы outputRectangle
была свободной функцией, а переменные-члены были бы не-const
.Люди могут объявить const Rectangle
, если хотят, и это облегчает жизнь.
Например, предложенную вами функцию Rectangle& operator= (const Rectangle&);
на самом деле невозможно реализовать, пока эти члены const
.В то время как с неконстантной версией вам вообще ничего не нужно писать, потому что сгенерированный неявно operator=
будет работать.