Subject: CGAL users discussion list
List archive
- From: "Sebastien Loriot (GeometryFactory)" <>
- To:
- Subject: Re: [cgal-discuss] Inheriting from Extended_homogeneous
- Date: Wed, 25 Apr 2012 09:55:24 +0200
You need to extend the Homogenous and then plug it inside Extended_Homogeneous. If you look in the header file, you'll see
that no Point_3 is defined.
Sebastien.
On 04/25/2012 09:50 AM, Johannes Ulen wrote:
Hello again,
No the code is not compiling when I inherit from Extended_Homogeneous,
only when I Inherit from Homogeneous. The difference I could work out
in the code was that the a base struct was defined for Homogeneous but
not for Extended_homogeneous. And the way inheritance is shown in the
manual is via this base struct.
- Johannes.
On Wed, 2012-04-25 at 08:45 +0200, Sebastien Loriot (GeometryFactory)
wrote:
I am not sure to understand your question, the code you posted was
correct and was compiling, isn't?
Sebastien.
On 04/24/2012 12:54 PM, Johannes Ulen wrote:
Thank you!
With minor adjustment the code you sent did exactly what I needed.
For my curiosity (and futher people ending up here when they search for
my problem) I still do not understand how to inherit from
Extended_homogeneous kernel and why the syntax would be different than
inheriting from the homogeneous kernel.
- Johannes
On Tue, 2012-04-24 at 08:37 +0200, Sebastien Loriot (GeometryFactory)
wrote:
On 04/23/2012 02:55 PM,
wrote:
I'm trying the add one property to the point class.
By help from StackOverflow I was directed to Manual Chapter 11.5 Extensible
Kernel using this I wrote the code below.
The code will not compile and I get the error:
‘typename CGAL::Extended_homogeneous::Base’ names
'CGAL::Extended_homogeneous::Base’, which is not a class template|
== CODE ==
#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_> >
{};
#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;
}
====
If the inhertiance is changed to "public K_Base::Base::template B<K_>::Type"
it
will compile but Then I miss the propeties from Extentensions I guess? Because
I get the error "Constructor not available for this kernel" when I run the
program.
The point constructors are not changed by this mechanism. This means
that only those documented are available. If you want to initialize your
extra data, you need to first create an object of type My_point and then
init a point of type MyKernel::Point_3 with it.
The class in the kernel is a kind of interface while My_point is the
representation.
Sebastien.
- [cgal-discuss] Inheriting from Extended_homogeneous, ulen, 04/23/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Sebastien Loriot (GeometryFactory), 04/24/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Johannes Ulén, 04/24/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Sebastien Loriot (GeometryFactory), 04/24/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Johannes Ulen, 04/24/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Sebastien Loriot (GeometryFactory), 04/25/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Johannes Ulen, 04/25/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Sebastien Loriot (GeometryFactory), 04/25/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Johannes Ulen, 04/25/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Sebastien Loriot (GeometryFactory), 04/25/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Johannes Ulén, 04/24/2012
- <Possible follow-up(s)>
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Tomislav Maric, 04/24/2012
- Re: [cgal-discuss] Inheriting from Extended_homogeneous, Sebastien Loriot (GeometryFactory), 04/24/2012
Archive powered by MHonArc 2.6.16.