尽管具有值

时间:2016-09-03 13:27:51

标签: c++ arrays string visual-studio debugging

所以我在Visual Studio中运行我的代码:

    #include "Class_Menu_Items.h"

    using namespace std;

    void mainMenu()
    {
       string menuItems[] = { "Start" , "Options" , "Help" , "Quit" };
       int index, menuItemChosen;

       Menu MainMenu[3];

       //assign values to all main menu
       for (index = 0; index <= 4; ++index);
       {
            MainMenu[index].setMenuName(menuItems[index]);

            cout << "[" << index + 1 << "] " << MainMenu[index].getMenuName() << endl;
       }

       cout << endl << "Choose a menu item: ";

       cin >> menuItemChosen;
   }

   void Menu::setMenuName(string _menuName)
   {
       menuName = _menuName;
   }

   string Menu::getMenuName()
   {
       return menuName;
   }

   Menu::Menu()
   {

   }

然而VS调试器声明错误代码0x0078f55c说明:

    MainMenu    0x0078f55c {{menuName="" }, {menuName="" }, {menuName="" }} Menu[3]
    +       [0] {menuName="" }  Menu
    +       [1] {menuName="" }  Menu
    +       [2] {menuName="" }  Menu
    -       MainMenu[index] {menuName="\x18Ú¹" }    Menu
    +       menuName    "\x18Ú¹" std::basic_string<char,std::char_traits<char>,std::allocator<char> >

我似乎没有得到问题所在'因为我相信我在menuItems []中有值,而不是空白。那么这个问题的原因是什么,我似乎没有注意到?感谢您提前得到任何答案:)

3 个答案:

答案 0 :(得分:0)

有两个问题
       MainMenu[index].setMenuName(menuItems[index]);

由于MainMenu是三个数组,而menuItems是四个数组,并且你的循环试图访问两个元素中的五个元素。

此外,您应该删除for语句中的分号

答案 1 :(得分:0)

问题 -

1)您正试图在for循环中访问MainMenu错误中的第五个元素(index = 4)。

2)for循环后你有一个分号。

解决方案 -

只需更改以下行 -

for (index = 0; index <= 4; ++index);

for(index = 0; index < 4; ++index)

答案 2 :(得分:0)

试试这个主菜单&#39;方法:

void mainMenu()
{
    string menuItems[] = { "Start", "Options", "Help", "Quit" };
    const int menuItemCount = sizeof(menuItems) / sizeof(menuItems[0]);
    int index, menuItemChosen;

    Menu MainMenu[menuItemCount];

    //assign values to all main menu
    for (index = 0; index < menuItemCount; ++index)
    {
        MainMenu[index].setMenuName(menuItems[index]);

        cout << "[" << index + 1 << "] " << MainMenu[index].getMenuName() << endl;
    }

    cout << endl << "Choose a menu item: ";

    cin >> menuItemChosen;
}

您之前已经描述过您的问题。