0

我正在制作一个跟踪高尔夫统计数据的程序,所以我需要制作球员。我做了一个函数叫做

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++ 真的很陌生,我可能做错了一些愚蠢的事情,所以如果有人可以帮忙的话。提前致谢!

4

4 回答 4

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 个。然后呢?

于 2012-07-24T19:41:31.073 回答
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;
    }
}

也就是说,使用数组(或向量)可能是一个更好的解决方案。

于 2012-07-24T19:47:46.773 回答
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)。

于 2012-07-24T19:49:43.817 回答
0

不要为不同的玩家使用开关,而是尝试为玩家创建一个动态分配的数组,这样您就可以随时添加或创建一个指针,然后在后台保留一个 int 来告诉有多少玩家在场,或者其他什么。

于 2012-07-24T20:29:15.680 回答