所以我在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 []中有值,而不是空白。那么这个问题的原因是什么,我似乎没有注意到?感谢您提前得到任何答案:)
答案 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;
}
您之前已经描述过您的问题。