C++ std::string’;没有名为‘的成员;获取_name';
我一直在犯这个错误C++ std::string’;没有名为‘的成员;获取_name';,c++,C++,我一直在犯这个错误 error: ‘std::string’ has no member named ‘get_name’ cout << name.get_name() << name.get_won() << name.get_lost << endl << endl; 也在改变 cout << "Enter player #" << counter << "'s name..
error: ‘std::string’ has no member named ‘get_name’
cout << name.get_name() << name.get_won() << name.get_lost << endl << endl;
也在改变
cout << "Enter player #" << counter << "'s name... " << endl;
cout << "The max is 30 players... " << endl;
getline (cin, name);
cout << endl;
cout << "Okay, so player #" << counter << " is " << name << "." << endl;
cout << "Please press Enter to continue..." << endl;
cin.ignore();
name_of_player[counter].set_name(name);
name_of_player[counter].set_wl(0,0);
coutname\u玩家
定义为31个string
s的数组:
string name_of_player[31];
执行以下操作时,可以从计数器枚举的数组中获取元素:
name = name_of_player[counter];
因此,name
是一个字符串
string
s没有get\u name
方法
您可能会对什么是name
感到困惑,因为您在get\u player
中定义了一个本地人名
,但是您从未使用该本地定义的人名
解决这一问题的一个丑陋的方法是创建另一个全局,在这里您将玩家的姓名声明为:
person stats_of_player[31];
然后在get\u player
中的for
-循环的底部,您可以将本地声明的变量分配给全局数组:
stats_of_player[counter] = name;
然后,您就可以在玩家列表
中使用玩家的stats\u,而不是您的for
-循环,如下所示:
for (int i=1; number_of_players >= i; i++)
{
cout << stats_of_player[i].get_name() << stats_of_player[i].get_won() << stats_of_player[i].get_lost() << endl << endl;
}
for(int i=1;玩家数量>=i;i++)
{
CuthNeMeOfOfString是字符串数组,而不是人对象。因此,您试图调用字符串对象上的GETYNEXY,这就是为什么您会得到这样的错误。
运行您的代码,我得到STD::String没有成员名为GETYNEX、GETYON或GETYEXORD。这是因为您试图调用C++字符串对象上的那些方法,而这些方法不适用。有那些方法
此外,似乎你期望玩家的名字是一个玩家数组,而实际上它是一个字符串数组
因为person类的方法是公共的,而不是静态的,所以需要person类的实例来调用这些方法(在类定义之外,例如main)
如果您混淆了人
和人
的名称,请创建一个。它们不一样。您的代码有很多问题,您似乎在不同的位置互换使用字符串
和人
,并且对它们使用相同的变量名,并声明variab当它们应该在较低的范围内声明并传递到函数中时,它们在全局范围内声明。应该在较低的范围内声明哪些内容?很抱歉,这些糟糕的代码,我今天刚刚学会了如何使用类。我已经好几年没有编程了。@DarrynZartman如果可能的话,所有内容都应该在较低的范围内声明。全局变量有时是我们的ed,但大多数情况下只是C兼容性的遗留问题。非常感谢。我意识到我应该只使用“玩家的人名”[31];”
stats_of_player[counter] = name;
for (int i=1; number_of_players >= i; i++)
{
cout << stats_of_player[i].get_name() << stats_of_player[i].get_won() << stats_of_player[i].get_lost() << endl << endl;
}
void get_player() {
....
player p();
p.set_name("Bob");
p.get_name();
...
}