Есть класс вот такие примитивные классы:
// Point.h
class Point
{
public:
Point(double x, double y);
double x_coord;
double y_coord;
};
// Square.h
class Square
{
public:
Point center_pt;
Square(double x, double y, double size);
};
// Square.cpp
Square::Square(double x, double y, double size)
{
center_pt = *new Point(x-size/2, y-size/2);
}
Возникает ошибка:
error: no matching function for call to 'Point::Point()'
Как я понимаю компилятор хочет определить переменную center_pt с помощью стандартного конструктора, без аргументов, но его нет. Это легко решается добавлением вызова другого конструктора:
Square::Square(double x, double y, double size):center_pt(x/size, y/size)
{...
Но если значения невозможно так просто посчитать, если в конструкторе происходит вычисление этих значений или переменные не заданы, а считываются допустим с датчика или ещё какой вариант, когда до выполнения конструктора
Square
нельзя получить параметры для
Point
, как тогда поступать?
Добавление конструктора для
Point
без параметров, не подходит, так как в реальной задачи это внешняя библиотека и ей изменение недопустимо.