首页 > 解决方案 > 使用混合结构元素类型将可迭代元素添加到结构

问题描述

编辑 我正在用 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

不幸的是,这并没有真正的帮助,因为元组是出了名的难以迭代。

标签: c++structcontainers

解决方案


推荐阅读