C Switch语句错误
发布时间:2020-12-16 10:52:08 所属栏目:百科 来源:网络整理
导读:我正在使用一个游戏循环的switch语句编写一个简单的基于文本的RPG.该程序正常工作,直到我尝试添加另一个case语句,此时它给出了以下三个错误:“跳转到案例标签”(错误发生在新添加的案例的行),以及两个“十字架初始化” ClassName * objectName’“(在案例2
我正在使用一个游戏循环的switch语句编写一个简单的基于文本的RPG.该程序正常工作,直到我尝试添加另一个case语句,此时它给出了以下三个错误:“跳转到案例标签”(错误发生在新添加的案例的行),以及两个“十字架初始化” ClassName * objectName’“(在案例2中创建新对象时发生错误).我会粘贴重要的代码,如果有人需要更多,请告诉我.
int main(void) { // add weapons to array Weapon *weaponList[12]; // Rusty Sword weaponList[0] = new Weapon(0,0); weaponList[0]->SetAll(0,2,3); // Bronze Sword weaponList[1] = new Weapon(0,0); weaponList[1]->SetAll(1,5,10); // Bronze Battle Axe weaponList[2] = new Weapon(0,0); weaponList[2]->SetAll(2,15,30); // Iron Sword weaponList[3] = new Weapon(0,0); weaponList[3]->SetAll(3,25,70); // add armor to array Armor *armorList[12]; // Worn Platemail armorList[0] = new Armor(0,0); armorList[0]->SetAll(0,3); // Bronze Chainmail armorList[1] = new Armor(0,0); armorList[1]->SetAll(1,8); // Bronze Platemail armorList[2] = new Armor(0,0); armorList[2]->SetAll(2,7,20); // Iron Chainmail armorList[3] = new Armor(0,0); armorList[3]->SetAll(3,60); while(gamestate != 8) { switch(gamestate) { case 0: cout << " /| Welcome!n" << " || n" << " || n" << " || n" << "_||_ n" << " 88 n" << " 88 Name: "; cin >> heroName; gamestate = GAME_STATE_MENU; break; case 1: cout << "n" << "'/stats' will show you your statsn" << "'/shop' will let you visit the weapon shopn" << "secret commands: /setweapon # /setarmor # /setheroexp #n" << "n"; cout << "Command: "; cin >> command; if (strcmp(command,"/stats") == 0) { gamestate = 2; break; } else if (strcmp(command,"/shop") == 0) { gamestate = 3; break; } else if (strcmp(command,"/fight") == 0) { gamestate = 4; break; } else if (strcmp(command,"/setweapon") == 0) { cin >> testNum; heroWeapon = testNum; break; } else if (strcmp(command,"/setarmor") == 0) { cin >> testNum; heroArmor = testNum; break; } else if (strcmp(command,"/setheroexp") == 0) { cin >> testNum; heroExp = testNum; LevelUp(); break; } else if (strcmp(command,"/exit") == 0) { gamestate = 8; break; } else { cout << "Please enter a valid command.n"; gamestate = 2; break; } case 2: Weapon *wCurrent = weaponList[heroWeapon]; Armor *aCurrent = armorList[heroArmor]; heroWeaponPower = wCurrent->GetWeaponAttack(); heroArmorDefense = aCurrent->GetArmorDefense(); heroPowerDefault = ((heroLevel - 1) * 10) + 10; heroPower = heroPowerDefault + (heroStrength * 2) + heroWeaponPower; heroDefenseDefault = ((heroLevel - 1) * 2) + 5; heroDefense = heroDefenseDefault + (heroAgility / 5) + heroArmorDefense; heroHealthDefault = (heroLevel * 5) + 20; heroHealth = heroHealthDefault + (heroStamina * 10); cout << "nS T A T SnName: " << heroName << "nLevel: " << heroLevel << "nExp: " << heroExp << "/" << expForLevel[heroLevel] << "nGold: " << heroGold << "nHealth: " << heroHealth << "nPower: " << heroPower << "nDefense: " << heroDefense << "nWeapon: " << weaponNameList[heroWeapon] << "nArmor: " << armorNameList[heroArmor] << "nn"; system("PAUSE"); gamestate = 2; break; case 3: break; } } return 0; } 解决方法
通过它的声音,你有:
case 2: Type somevar = ...; ... break; case 3: 为了达到案例3,编译器会在somevar的初始化之后生成跳转. 要修复,请使用大括号创建围绕变量声明的块: case 2: { Type somevar = ...; ... } break; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |