struct VirtualWall { int m_virtual_wall_id; std::string m_virtual_wall_name; QPointF m_wall_point_begin; QPointF m_wall_point_end; };需要初始化吗,如果需要初始化,那么怎么样初始化才好
时间: 2024-03-20 11:44:36 浏览: 55
C++11 std::shared_ptr总结与使用示例代码详解
是的,结构体变量的成员变量必须在使用之前进行初始化。在 C++11 及以上版本中,可以使用以下方式进行初始化:
1. 通过成员初始化列表进行初始化:
```
VirtualWall m_virtual_wall = {0, "", QPointF(0,0), QPointF(0,0)};
```
这样可以将 `m_virtual_wall_id` 初始化为 0,将 `m_virtual_wall_name` 初始化为空字符串,将 `m_wall_point_begin` 和 `m_wall_point_end` 初始化为 (0,0)。
2. 在定义结构体变量时使用默认构造函数进行初始化:
```
VirtualWall m_virtual_wall{};
```
这样可以使用默认构造函数将 `m_virtual_wall` 结构体变量的所有成员变量初始化为默认值,即 `m_virtual_wall_id` 初始化为 0,`m_virtual_wall_name` 初始化为空字符串,`m_wall_point_begin` 和 `m_wall_point_end` 初始化为 (0,0)。
需要注意的是,如果你使用的是旧版本的 C++,则默认构造函数可能不会被自动调用,这时需要使用第一种方式进行初始化。
阅读全文