C ++非结构化struct成员-字段不存在

问题描述

我的C ++代码具有以下结构。

struct XYZ {
  double x;
  double y;
  double z;
};

struct Data {
  XYZ xyz_point;
  double item_1;
  double item_2;
  double item_3;
};

在我的代码中,我创建了一个结构为Data的向量。

std::vector<Data> data_vector;

for (i = 0; i < 5; i++) {
   Data data_point_1;
   data_point_1.xyz_point.x = 10.0;
   data_point_1.xyz_point.y = 11.0;
   data_point_1.xyz_point.z = 12.0;
   data_point_1.item_1 = 13.0;
   data_point_1.item_2 = 14.0;
   data_point_1.item_3 = 15.0;
   data_vector.push_back(data_point_1);
}

代码构建成功,没有任何错误,但是在CPP_Check期间,我收到以下警告/错误。 data_point_1没有字段xyz

[test.cc:122]: (error: uninitStructMember) Uninitialized struct member: data_point_1.x
[test.cc:122]: (error: uninitStructMember) Uninitialized struct member: data_point_1.y
[test.cc:122]: (error: uninitStructMember) Uninitialized struct member: data_point_1.z

您能帮我解决这个问题吗?

谢谢

解决方法

[events,values.map]需要默认的构造函数。编译器可以提供该功能,但不会初始化push_back

CPP_Check正在发现该问题。

一种解决方法是改用double initialiser-list 语法。不需要默认的构造函数。另一种选择是提供用于初始化成员的默认构造函数。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...