我改变了这个源代码:
GeomAPI_ExtremaCurveCurve ecc(
BRep_Tool::Curve(wd->Edge(i + 1), u11, u12),
BRep_Tool::Curve(wd->Edge(j + 1), u21, u22)
);
对此:
static Handle(Geom_Curve) c0 = BRep_Tool::Curve(wd->Edge(i + 1), u11, u12);
static Handle(Geom_Curve) c1 = BRep_Tool::Curve(wd->Edge(j + 1), u21, u22);
GeomAPI_ExtremaCurveCurve ecc(c0, c1);
这解决了它。但我仍然有点不明白为什么。这是 GeomAPI_ExtremaCurveCurve 对象的文档:
GeomAPI_ExtremaCurveCurve (const Handle< Geom_Curve > &C1, const Handle< Geom_Curve > &C2)
我仍然不是指针最棒的,但看起来参数需要一个不可变的指针,但是指针指向的数据可以改变吗?
然后是 BRep_Tool::Curve 方法:
static Handle< Geom_Curve > Curve (const TopoDS_Edge &E, Standard_Real &First, Standard_Real &Last)
现在,当我偶尔使用不同的语言进行编程时,C++ 中的静态说明符令人困惑,但这里它与链接和持续时间有关,cppref:
static - static or thread storage duration and internal linkage.
我必须补充一点,这个函数是线程应用程序的一部分,并且 static 和 thread_local 在某些方面在线程存储方面可以互换。
任何人都可以阐明为什么此修复程序有效吗?
谢谢你,S