我正在制作一个跟踪高尔夫球状态的程序,所以我需要制造球员。我做了一个名为
的函数getPlayer(int playerNum);
并且在其中我拥有所有这些代码
switch(playerNum)
case 1: return(player1);break;
case 2: return(player2);break;
case 3: return(player3);break;
case 4: return(player4);break;
case 5: return(player5);break;
case 6: return(player6);break;
case 7: return(player7);break;
case 8: return(player8);break;
case 9: return(player9);break;
case 10: return(player10);break;
和我的playermanager.h
#ifndef PLAYERMANAGER_H
#define PLAYERMANAGER_H
#include <string>
class playerManager
{
public:
playerManager();
std::string getPlayer(int playerNum);
private:
std::string player1;
std::string player2;
std::string player3;
std::string player4;
std::string player5;
std::string player6;
std::string player7;
std::string player8;
std::string player9;
std::string player10;
};
#endif // PLAYERMANAGER_H
现在,当我运行此操作时,我收到了错误
'player1' was not declared in this scope
我也得到了错误
break statement not within loop or switch
它从玩家1到玩家10继续前进。 我通过调用文件读取器函数来智能化字符串。我对c ++很陌生,我可能正在做一些愚蠢的错误,所以如果有人可以帮忙请。 提前谢谢!
答案 0 :(得分:4)
离开codereview的东西 -
你有没有机会实施
std::string getPlayer(int playerNum);
而不是
std::string playerManager::getPlayer(int playerNum);
另外 - switch
:
switch(playerNum)
{
case 1: return(player1);break;
case 2: return(player2);break;
case 3: return(player3);break;
case 4: return(player4);break;
case 5: return(player5);break;
case 6: return(player6);break;
case 7: return(player7);break;
case 8: return(player8);break;
case 9: return(player9);break;
case 10: return(player10);break;
}
除此之外 - 糟糕的代码。想象一下,我是你的客户并且告诉你我想要11个玩家而不是10个。那么呢?
答案 1 :(得分:1)
可能是一些不同的东西,但可能是你想要这个:
std::string playerManager::getPlayer(int playerNum) //<- here you need the class name
{
switch(playerNum)
{
//^- and here you don't show the { and } in your example, and this could be the
// reason for the "break statement not within loop or switch" error
case 1: return(player1);break;
case 2: return(player2);break;
case 3: return(player3);break;
case 4: return(player4);break;
case 5: return(player5);break;
case 6: return(player6);break;
case 7: return(player7);break;
case 8: return(player8);break;
case 9: return(player9);break;
case 10: return(player10);break;
}
}
也就是说,使用数组(或向量)可能是更好的解决方案。
答案 2 :(得分:0)
您在getPlayer()
函数中显示了以下代码:
switch(playerNum)
case 1: return(player1);break;
case 2: return(player2);break;
case 3: return(player3);break;
case 4: return(player4);break;
case 5: return(player5);break;
case 6: return(player6);break;
case 7: return(player7);break;
case 8: return(player8);break;
case 9: return(player9);break;
case 10: return(player10);break;
此代码不在函数内。我假设您没有发布几行显示它所在的功能。请执行此操作以便我们为您提供进一步的帮助。
此外,由于您使用的是播放器列表,您应该考虑学习如何使用STL中的数组或容器(例如std :: vector)。
答案 3 :(得分:0)
不要为不同的玩家使用开关,而是尝试为玩家制作动态分配的数组,这样你就可以随时添加或制作指针,然后在背景中保持一个int以告知有多少玩家,或者不管。