C++ / 'string'未在此范围/错误中声明

C++ / 'string' was not declared in this scope/ error

本文关键字:错误 声明 范围 string C++      更新时间:2023-10-16

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

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;

在我的游戏管理员

    #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++真的很陌生,我可能做错了什么,所以如果有人能帮忙的话。提前感谢!

省略代码评审的内容-

你有没有实施

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名。那怎么办?

可能有一些不同的东西,但可能是你想要的:

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

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

您在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)。

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