C++ / 'string'未在此范围/错误中声明
C++ / 'string' was not declared in this scope/ error
我正在制作一个跟踪高尔夫统计数据的程序,所以我需要培养球员。我做了一个叫做的函数
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来告诉有多少玩家,或者其他什么。
相关文章:
- 错误:未在此范围内声明'reverse'
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 错误:"imread"未在此范围内声明
- 在气泡排序程序中未声明错误功能
- 使用全局声明的向量时,C++双重释放错误/损坏
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- C++ [错误] 声明'char '隐藏参数。什么意思?
- 类中的静态函数给出了错误:声明中的两种或多个数据类型
- 错误:声明冲突 - 指针不能是 int
- 收到 CUDA 错误"声明与以前的"variable_name"不兼容
- 错误:声明不声明
- Visual Studio 2010 链接器错误C++声明我从头文件创建的类时
- Cython 错误:声明不声明任何内容
- 错误"声明非模板函数"C++
- 无效地使用不完整的类型/前向错误声明.可能误用抽象类?(c++)
- 错误:声明冲突.用c++编译c代码
- C++错误:声明中存在显式限定
- else语句(C++)上的错误w/声明
- 初始化const类成员,错误:声明没有声明任何内容