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;
}

それはさておき - ひどいコード。私があなたの顧客で、10 人ではなく 11 人のプレイヤーが欲しいと言ったとします。

于 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

さまざまなプレーヤーにスイッチを使用する代わりに、プレーヤーに動的に割り当てられた配列を作成してみてください。そうすれば、いつでもポインターを追加または作成し、バックグラウンドで int を保持して、存在するプレーヤーの数などを知ることができます。

于 2012-07-24T20:29:15.680 に答える
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 に答える