如何解决使用混合结构元素类型向结构添加可迭代元素
编辑 我正在用c ++ 11编写代码。
我有一些我为微控制器编写的程序,这些程序使用结构将项目一起存储在闪存中。例如
struct save{
char name[10]="bob";
int weight=244;
char food[50]="Taco";
} myVals;
我知道没有内置的方法可以遍历struct值,但是我认为我应该能够参照struct值添加某种容器,但是要弄清楚可以采用不同类型的容器是一个挑战。为了我。到目前为止,我能做的最好的就是将它们打印出来的功能,如下所示。
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,food}
编辑
我尝试使用元组。我不能在结构内部使用它。
struct Data{
char name[10]="bob";
int weight=14;
char food[50]="taco";
int size=3;
tuple<char*,char*> mylist (name,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*,char*> mylist (data.name,data.weight,data.food);
int main(){
printf("%s",get<0>(mylist));
return 0;
}
>food
不幸的是,这并没有真正的帮助,因为众所周知,元组很难迭代。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。