c++ - 使用混合结构元素类型将可迭代元素添加到结构
问题描述
编辑 我正在用 c++11 编码。
我有我为微控制器编写的程序,这些程序使用结构将项目一起存储在闪存中。例如
struct save{
char name[10]="bob";
int weight=244;
char food[50]="Taco";
} myVals;
我知道没有内置的方法来遍历结构值,但我认为我应该能够参考结构值添加某种容器,但是找出一个可以采用不同类型的容器对我来说是一个挑战。到目前为止,我能做的最好的就是打印它们的功能,如下所示。
struct save{
char name[10]="bob";
int weight=244;
char food[50]="Taco";
function dump(){
printf("{\"name\":\"%s\",\"weight\":%s,\"food\":\"%s\"}",name,weight,food);
}
} myVals;
但是,我真正想要的是一个可以迭代的对象。我意识到 C++ 中没有反射,但是有没有办法可以将它构建到我的结构中?有没有办法创建像这样的容器,我只给它一个类型列表和一个项目列表?
mylist<char* ,int, char*> {name,weight,food}
编辑
我尝试使用元组。我不能在结构中使用它。
struct Data{
char name[10]="bob";
int weight=14;
char food[50]="taco";
int size=3;
tuple<char*,int,char*> mylist (name,weight,food);
} data;
因为我收到类似的错误
error: ‘name’ is not a type
但是,如果我将它放在它编译的结构之外,我可以获得值。
struct Data{
char name[10]="bob";
int weight=14;
char food[50]="taco";
int size=3;
} data;
tuple<char*,int,char*> mylist (data.name,data.weight,data.food);
int main(){
printf("%s",get<0>(mylist));
return 0;
}
>food
不幸的是,这并没有真正的帮助,因为元组是出了名的难以迭代。
解决方案
推荐阅读
- reporting-services - MDX StrToMember 日期范围问题
- firebase - 针对字段问题的 Flutter Firebase Firestore 查询文档
- puppet - Puppet:服务器主机名“puppetmaster”与服务器证书不匹配;期望 puppetmaster.us-east-2.compute.internal、DNS:puppet 之一,
- attributes - AAPT:错误:“80dp”与属性角度 (attr) 浮动不兼容
- c++ - 如何通过用户输入打开文件?C++
- node.js - 使用 mongoose 通过字段的超集检索元素
- android - Android Studio 模拟器和博览会在移动设备中无法正常工作
- python - 使用 json 文件在 python 中转换为 sqlite 表格式
- r - XGBoost 仅使用部分功能
- javascript - 赛普拉斯中的两个新网址,但第二个缺少路径变量