我正在尝试显式初始化嵌套的struct
,但我在代码中找不到任何错误。我正在使用Visual Studio 2013与Visual C ++编译器。当尝试编译下面的代码时,我收到以下错误消息:"编译器中发生内部错误。"
// Parameter determines which menu will be displayed (0, 1, or 2).
int menu(int n) {
struct Menus_obj {
struct Menu_obj {
string query;
string choices[5];
};
Menu_obj Menu;
};
Menus_obj Menus[3] = {
{
"Fruit type (1-5): ",
{
"1. Apple - 1.00\n",
"2. Orange - 2.00\n",
"3. Banana - 3.00\n",
"4. Blueberry - 5.00\n",
"5. Blackberry - 8.00\n"
}
},
{
"Vegetable type (1-5): ",
{
"1. Broccoli - 2.00\n",
"2. Spinach - 4.00\n",
"3. Kale - 6.00\n",
"4. Cauliflower - 8.00\n",
"5. Moringa - 10.00\n"
}
},
{
"Number of shoppers: ",
{
"",
"",
"",
"",
""
}
}
};
cout << Menus[n].Menu.query << endl;
for (int i = 0; i < 5; i++) {
cout << Menus[n].Menu.choices[i];
}
cin >> n;
return n - 1;
}
我的代码是否有错误,和/或是否是逻辑错误;我想做错什么事吗?提前谢谢。
答案 0 :(得分:2)
找到内部编译器错误总是很有趣。首先,您应该将测试代码提交给MS,以便他们解决问题。
其次,由于问题是在string
内的数组中初始化struct
个对象,我们只需将它们放入匿名struct
即可实现解决方法。 / p>
将您的Menus_obj
结构更改为这样,并且编译正常。
struct Menus_obj {
struct Menu_obj {
string query;
struct {
string choices[5];
};
};
Menu_obj Menu;
};