如何解决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
没有字段x
,y
和z
。
[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 语法。不需要默认的构造函数。另一种选择是提供用于初始化成员的默认构造函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。