2013-10-28 7 views
0

더 많은 메소드를 추가하기 위해 MinimumDiameter 클래스를 확장하고 싶습니다. 나는 고전적인 C++ 구문을 시도했다 :GEOS 클래스 확장하기

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&' 

parent constructor을 사용하지 않고 매개 변수없이 기본값을 사용하는 것이 좋습니다? 내 코드에 무엇이 누락 되었습니까?

답변

2

ExtendedMinimumDiameter과 같은 파생 클래스를 만들면 완전히 새로운 클래스가되며 완전히 새로운 생성자를 만들어야합니다. 그것들은 매우 간단 할 수 있으며, 부모 클래스 생성자를 (초기화리스트에서) 호출하고 다른 방법으로는 비어있을 수 있습니다.하지만 직접 만들어야합니다.

예를 들어 다음을 추가해야합니다.

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

타크스가 많이! 죄송합니다 멍청한 질문에 대한 ... – caneta

+1

질문에 대해 걱정하지 마십시오 : 아무런 질문도 나쁜 질문이며, 우리 모두는 그것을 가지고 있거나 결코 배울 수 없게됩니다. – GMasucci