C++ 扩展GEOS类

C++ 扩展GEOS类,c++,inheritance,geos,C++,Inheritance,Geos,我想扩展MinimumDiameter类,以便添加更多的方法。 我尝试过经典的C++语法: class ExtendedMinimumDiameter : public MinimumDiameter{}; ExtendedMinimumDiameter *minimumDiameter = new ExtendedMinimumDiameter(inputGeometry); 问题是,当我尝试实例化我的新类的对象时,gcc-4.8.2抱怨如下: operators.cpp:194:92: e

我想扩展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&'
为什么它不使用,而是建议使用没有参数的默认值?
我的代码缺少什么?

当你创建一个派生类时,比如你的
扩展最小直径
,它是一个全新的类,你必须为它创建全新的构造函数。它们可以非常简单,只需调用父类构造函数(在它们的初始值设定项列表中),否则将为空,但您需要自己创建它们

在这种情况下,您必须添加例如

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

永远不要担心问题:任何问题都不是一个坏问题,我们都有这些问题,否则我们将永远无法学习。