C++结构体内的结构体如何初始化

今天把我的代码改了下,用一个新的结构体去包含原来的结构体,然后发现一个问题,如何初始化?
代码如下

typedef struct
{
    double x0, y0, x1, y1;//直线的起止点

}LINE;//读取排样dxf结果时候的直线数据存储结构
typedef struct
{
    double Arccent_x, Arccent_y;//保留ARC的圆心
    double m_Arc_r;//ARC的半径
    double m_ArcAngle_start, m_ArcAngle_end;//ARC的起止角度
}ARC;
typedef struct
{
    double m_Circent_x, m_Circent_y;//CIRCLE的圆心
    double m_Circle_r;//CIRCLE的半径
}CIRCLE;
typedef struct
{
    double GeoEle_start_x0, GeoEle_start_y0, GeoEle_start_x1, GeoEle_start_y1;//作为每一个图元的标准直线段,用作后续寻求同一个封闭图元而用的标准
    LINE m_line;//包含三种类型
    ARC m_arc;
    CIRCLE m_circle;
    unsigned int m_typegeomele;//1为LINE,2为ARC,3为CIRCLE,默认是1
    int m_GeomEleID;//对每一个图元编号,将来为寻找封闭图元遍历用的,默认为-1
    int m_GeomCloseID;//对每一个封闭环所属的图元进行编号,给将来封闭环之间判断使用,默认为-1
    bool m_IsGeomeleAccept;//判断该图元是不是已经被收录,默认为NULL
}GeomStandData;//创建一个统一的数据结构,用来存放所有的类型,带着走

我又写了个类去包含这四个结构体,类的作用主要是对这些结构体进行操作

class GEOMELE//只是用来对图元参数进行处理
{
public:
    GEOMELE();
    ~GEOMELE();
public://将LINE ARC CIRLCE等元素读取进来,将来切割时候要用到这些原始数据
    LINE m_line ;//开始时候我想在这里写成LINE m_line={0.0,0.0,0.0,0.0},下面几个也类似,但发现一编译就出错。如下图
    ARC m_arc ;
    CIRCLE m_circle;
    GeomStandData m_geomstandData ;
public://这个类要实现的功能
    //读取转换数据的功能,输入LINE,ARC,CIRCLE的原始数据,转换成GeoEle_start_x0, GeoEle_start_y0, GeoEle_start_x1, GeoEle_start_y1;
    //LINE ReadLineData(double x0,double y0,double x1,double y1);//读取直线的数据,并把数据保存起来返回给图元的统一起点和终点,用来将来寻找封闭环用
    GeomStandData ReadLineData(LINE m_line);//输入dxf里面LINE的四个参数,输出
    GeomStandData ReadARCData(double Arccent_x, double Arccent_y, double r, double angle_start, double angle_end);//读取ARC的参数,共有五个参数,但是要转为图元的统一起点和终点,用来将来寻找封闭环用

    GeomStandData ReadCIRCLE(double Circent_x, double Circent_y, double R);//对于圆而言,那么他就是独立的封闭环,给它附一个特别的值如99999,下个类判断到这个值的时候,直接让他是一个封闭环就好
    //将
};

这里写图片描述
为此我将初始化放到类的构造函数里面,把结构体里面的结构体初始化分三步走,先在.h里面实例化结构体,然后在构造函数里面先初始化子结构体,然后把结构体整体带入。

GEOMELE::GEOMELE() 
{
     m_line = { 0.0, 0.0, 0.0, 0.0 };
     m_arc = { 0.0, 0.0, 0.0, 0.0, 0.0 };
     m_circle = { 0.0, 0.0, 0.0 };
     m_geomstandData = { 0.0, 0.0, 0.0, 0.0, m_line, m_arc, m_circle, 1, -1, -1, NULL };

}

以下是验证是否初始化成果
这里写图片描述
以下是两篇关于变量初始化的文章
C++类成员变量的初始化,讲得很详细
结构体初始化

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值