在C ++中嵌套结构JSON样式

时间:2014-09-15 07:01:28

标签: c++ json visual-c++ struct

我正在尝试显式初始化嵌套的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;

    }

我的代码是否有错误,和/或是否是逻辑错误;我想做错什么事吗?提前谢谢。

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;
};