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

cout
name\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++)
{

Cuth

NeMeOfOfString是字符串数组,而不是人对象。因此,您试图调用字符串对象上的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();
  ...
}