首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在此范围内未声明C++ / 'string‘/错误

在此范围内未声明C++ / 'string‘/错误
EN

Stack Overflow用户
提问于 2012-07-25 03:39:47
回答 4查看 9.7K关注 0票数 0

我正在制作一个程序,将跟踪高尔夫统计,所以我需要使球员。我创建了一个名为

getPlayer(int playerNum);

在里面我有所有的代码

代码语言:javascript
复制
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中

代码语言:javascript
复制
    #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

现在,当我运行这个命令时,我得到了错误信息

代码语言:javascript
复制
    'player1' was not declared in this scope

我也得到了一个错误

代码语言:javascript
复制
    break statement not within loop or switch 

我已经通过调用文件读取器函数对字符串进行了智能化处理。我真的是c++的新手,我可能正在做一些愚蠢的错误,所以如果有人可以帮助我的话。提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-25 03:41:31

去掉codereview之类的东西-

您是否碰巧实现了

代码语言:javascript
复制
std::string getPlayer(int playerNum);

而不是

代码语言:javascript
复制
std::string playerManager::getPlayer(int playerNum);

还有- switch

代码语言:javascript
复制
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个,然后呢?

票数 4
EN

Stack Overflow用户

发布于 2012-07-25 03:47:47

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

代码语言:javascript
复制
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;
    }
}

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

票数 1
EN

Stack Overflow用户

发布于 2012-07-25 03:49:44

您已经在getPlayer()函数中显示了以下代码:

代码语言:javascript
复制
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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11638128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档