一、问题描述
定义了如下的结构体
struct Data_curve
{
int curve_index; //TopoDS_Edge索引号
//几何曲线的类型(枚举变量)
OCC_Geom_curve curve_type;
//各种曲线(类的实例)
Geom_BezierCurve bezier_curve;
Geom_BSplineCurve bspline_curve;
Geom_TrimmedCurve trimmed_curve;
Geom_Circle circle_curve;
Geom_Ellipse ellipse_curve;
Geom_Hyperbola hyperbola_curve; //双曲线
Geom_Parabola parabola_curve; //抛物线
Geom_Line line_curve;
Geom_OffsetCurve offset_curve; //偏移曲线
};
结果在用结构体定义变量时出现如下错误
二、找bug过程
根据网上博客解释,是因为构造函数引起的编译错误。
可以发现定义的结构体中存在好几个类的实例,应该是这些类的实例调用构造函数引起的。以Geom_BezierCurve为例,查看她
的构造函数如下:
可以看到两个构造函数都是需要输入参数的,这边没有参数造成了构造函数的调用失败,所以再结构体里定义这种类型的实例是
不行,但对于那些不需要参数能够自动调用构造函数的就没有问题,例如TopoDS_Edge
三、问题解决方法
不能放实例,那就放对应类型的指针,这样就不存在调用构造函数的问题了。但是带来新的问题就是内存管理,及时释放内存,防止内存泄露,所以把结构体改成了类的写法:
//数据曲线类
<