The program output is : std::vector(0x55f164f79450) instead of Childs[one]: What am i doing wrong here?
Any help would be appreciated !
The online example : http://www.angusj.com/delphi/clipper/documentation/Docs/Units/ClipperLib/Classes/PolyTree/_Body.htm
My test code :
#include <clipper/include/clipper.hpp>
#include <iterator>
#include <algorithm>
using namespace ClipperLib;
using namespace std;
area_partition::area_partition()
{
//Paths
Path one = {{10,10},{100,10},{100,100},{10,100}};
Path two = {{20,20},{20,90},{90,90},{90,20}};
Path three = {{30,30},{50,30},{50,50},{30,50}};
Path four = {{60,60},{80,60},{80,80},{60,80}};
PolyTree array;
//Setup output..
ClipperLib::Clipper c;
c.AddPath(one, ptSubject, true);
c.AddPath(two, ptSubject, true);
c.AddPath(three, ptSubject, true);
c.AddPath(four, ptSubject, true);
c.Execute(ctDifference,array);
c.Clear();
//call to Clipper.Execute method here which fills 'polytree'
PolyNode *polynode = array.GetFirst();
while (polynode)
{
//do stuff with polynode here
qDebug()<< "parent : " << polynode->Parent;
qDebug()<< "childs : " << polynode->Childs;
qDebug()<< "isHole : " << polynode->IsHole();
qDebug()<< "childcount : " << polynode->ChildCount();
qDebug()<< " ";
qDebug()<< " ";
polynode = polynode->GetNext();
}
}
My terminal output :
parent : 0x7ffc246b6730
childs : std::vector(0x55f164f79450)
isHole : false
childcount : 1
parent : 0x55f164f793f0
childs : std::vector(0x55f165763b40, 0x55f165763bf0)
isHole : true
childcount : 2
parent : 0x55f164f79450
childs : std::vector()
isHole : false
childcount : 0
parent : 0x55f164f79450
childs : std::vector()
isHole : false
childcount : 0
The output of the online example :
ChildCount = 1
Childs[0]:
Contour = ((10,10),(100,10),(100,100),(10,100))
IsHole = False
ChildCount = 1
Childs[0]:
Contour = ((20,20),(20,90),(90,90),(90,20))
IsHole = True
ChildCount = 2
Childs[0]:
Contour = ((30,30),(50,30),(50,50),(30,50))
IsHole = False
ChildCount = 0
Childs[1]:
Contour = ((60,60),(80,60),(80,80),(60,80))
IsHole = False
ChildCount = 0