使用混合结构元素类型向结构添加可迭代元素

问题描述

编辑 我正在用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 (将#修改为@)