我应该怎么做才能初始化结构数组
What should I do to initialize an array of a structure
我使用以下方法来初始化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
};
在初始化一组嵌套的聚合(即结构/数组(时,您必须省略所有大括号或无大括号。
相关文章:
- 在C和C++中初始化结构中的数组
- 我们可以用参数化构造函数初始化结构的数组吗?
- 尝试初始化结构内的联合时出错
- 使用其他成员初始化结构的成员?
- 使用构造函数初始化结构还是在之后设置其值更好?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何在另一个结构中初始化结构数组?
- 如何在构造函数中初始化结构体的动态数组?
- 初始化结构中的联合 - c++
- 尝试初始化结构向量时出现编译错误
- 用于初始化结构的 void 指针强制转换
- 初始化结构的两种方式
- 使用用户定义的构造函数初始化C++结构
- 使用初始值设定项列表初始化结构,对于 std::array 失败
- 在 c++ 中初始化结构的指针
- 无序列图会创建一个零初始化结构吗?
- 如何在C++中初始化结构
- C 用结构指针初始化结构
- 在C 中初始化结构数组
- 使用数组聚合初始化结构数组