首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展GEOS类

扩展GEOS类
EN

Stack Overflow用户
提问于 2013-10-28 07:53:46
回答 1查看 48关注 0票数 0

为了添加更多的方法,我想扩展MinimumDiameter类。我尝试过使用经典的C++语法:

代码语言:javascript
复制
class ExtendedMinimumDiameter : public MinimumDiameter{};
ExtendedMinimumDiameter *minimumDiameter = new ExtendedMinimumDiameter(inputGeometry);

问题是,当我尝试实例化新类的一个对象时,gcc-4.8.2抱怨如下:

代码语言:javascript
复制
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&'

为什么它不使用父构造函数,而是建议使用不带参数的默认参数?我的代码遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-28 07:56:24

当您创建一个派生类时,比如您的ExtendedMinimumDiameter,它是一个全新的类,您必须为它创建全新的构造函数。它们可以非常简单,只需调用父类构造函数(在它们的初始化程序列表中),否则是空的,但是您需要自己创建它们。

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

代码语言:javascript
复制
ExtendedMinimumDiameter(const geos::geom::Geometry* geom)
    : MinimumDiameter(geom)
{}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19629565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档