我应该怎么做才能初始化结构数组

What should I do to initialize an array of a structure

本文关键字:初始化 结构 数组 我应该      更新时间:2023-10-16

我使用以下方法来初始化CandyBar结构数组,但编译器总是在结构初始化器中显示多余的元素。我尝试在数组定义中只放置一个结构初始值设定项,它编译了,但数组的其余 2 个元素为 null
我该怎么办?

struct CandyBar{
    string brand;
    float weight;
    int calories;
};
int main(int argc, const char * argv[]) {
        array<CandyBar, 3> ary_cb =
    {
        {"Mocha Munch", 2.3, 350},
        {"Mocha Munch", 2.3, 350},
        {"Mocha Munch", 2.3, 350}
    };
    return 0;
}

你的结构周围缺少一对大括号(记住,std::array是一个包含数组的结构(:

    array<CandyBar, 3> ary_cb =
    {
        { 
            {"Mocha Munch", 2.3, 350} ,
            {"Mocha Munch", 2.3, 350} ,
            {"Mocha Munch", 2.3, 350} 
        }
    };

数组的其余 2 个元素为 null 的原因是您将所有信息放在第一个糖果元素中,而不是其他两个糖果棒元素中。

溶液:

int main(int argc, const char * argv[]) 
{
    array<CandyBar, 3> ary_cb =
    {
        { //Struct
            {"Mocha Munch", 2.3, 350},
            {"Mocha Munch", 2.3, 350},
            {"Mocha Munch", 2.3, 350}
        }
    };
    return 0;
}

来源 ->链接

除了quantdev的建议外,这也有效(在C++11中(:

array<CandyBar, 3> ary_cb =
{
    "Mocha Munch", 2.3, 350 ,
    "Mocha Munch", 2.3, 350 ,
    "Mocha Munch", 2.3, 350 
};

在初始化一组嵌套的聚合(即结构/数组(时,您必须省略所有大括号或无大括号。