CGAL の質問:
ポイント クラスに 1 つのプロパティを追加しようとしています。私が推測する最初のステップは、カーネルを継承し、ポイント クラスを CGAL から継承した独自のものに置き換えることです。しかし、この小さな最初の一歩を踏み出そうとすると、問題が発生します。
編集:以下のコメントに基づいて、継承をマニュアルに記載されている方法に変更しました。以下のコードでは、次のコンパイル エラーが発生します。
- 'typename CGAL::Extended_homogeneous::Base' 名前 'CGAL::Extended_homogeneous::Base', これはクラス テンプレートではありません |
とりわけ。
MyBase.h
#include <CGAL/Extended_homogeneous.h>
template < typename K_, typename K_Base >
class My_base : public K_Base::template Base<K_>::Type
{
typedef typename K_Base::template Base<K_>::Type OldK;
public:
typedef K_ Kernel;
template < typename Kernel2 >
struct Base { typedef My_base<Kernel2, K_Base> Type; };
};
template < typename RT_ >
struct MyKernel : public CGAL::Type_equality_wrapper<My_base<MyKernel<RT_>, CGAL::Homogeneous<RT_> >, MyKernel<RT_> >
{};
最小.cpp
#include "MyKernel.h"
#include <CGAL/Nef_polyhedron_3.h>
typedef MyKernel<CGAL::Gmpz> Kernel;
typedef CGAL::Nef_polyhedron_3<Kernel> Nef_Polyhedron;
typedef Nef_Polyhedron::Plane_3 Plane;
int main()
{
Nef_Polyhedron half_space(Plane(1,1,1,1), Nef_Polyhedron::EXCLUDED);
return 0;
}
継承が「public K_Base::Base::template B::Type」に変更された場合はコンパイルされますが、拡張機能からのプロパティが不足していると思いますか? エラーが出るから
「このカーネルではコンストラクターを使用できません」
プログラムを実行すると