Расширение класса GEOS

Я хотел бы расширить класс MinimumDiameter, чтобы добавить еще несколько методов.
Я пробовал с классическим синтаксисом C ++:

class ExtendedMinimumDiameter : public MinimumDiameter{};
ExtendedMinimumDiameter *minimumDiameter = new ExtendedMinimumDiameter(inputGeometry);

Проблема в том, что когда я пытаюсь создать экземпляр объекта моего нового класса, gcc-4.8.2 выдает следующее:

operators.cpp:194:92: error: no matching function for call to 'ExtendedMinimumDiameter::ExtendedMinimumDiameter(const geos::geom::Geometry*&)'
ExtendedMinimumDiameter minimumDiameter = ExtendedMinimumDiameter(inputGeometry);
^
operators.cpp:194:92: note: candidates are:
operators.cpp:116:7: note: ExtendedMinimumDiameter::ExtendedMinimumDiameter()
class ExtendedMinimumDiameter : public MinimumDiameter{
^
operators.cpp:116:7: note:   candidate expects 0 arguments, 1 provided
operators.cpp:116:7: note: ExtendedMinimumDiameter::ExtendedMinimumDiameter(const ExtendedMinimumDiameter&)
operators.cpp:116:7: note:   no known conversion for argument 1 from 'const geos::geom::Geometry*' to 'const ExtendedMinimumDiameter&'

Почему он не использует родительский конструктор, и предлагает вместо этого использовать по умолчанию без параметров?
Чего не хватает в моем коде?

0

Решение

Когда вы создаете производный класс, как ваш ExtendedMinimumDiameterЭто совершенно новый класс, и вы должны создать для него совершенно новые конструкторы. Они могут быть очень простыми и просто вызывать конструкторы родительских классов (в их списках инициализаторов) и в противном случае быть пустыми, но вам нужно сделать их самостоятельно.

В этом случае вы должны добавить, например,

ExtendedMinimumDiameter(const geos::geom::Geometry* geom)
: MinimumDiameter(geom)
{}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]