程序输出是:std::vector(0x55f164f79450)而不是Childs[one]:我在这里做错了什么?
任何帮助,将不胜感激 !
在线示例: http ://www.angusj.com/delphi/clipper/documentation/Docs/Units/ClipperLib/Classes/PolyTree/_Body.htm
我的测试代码:
#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();
}
}
我的终端输出:
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
在线示例的输出:
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