Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我试图创建一个类向量,然后用for循环命名每个类_C++_Loops_Vector_Std - Fatal编程技术网

C++ 我试图创建一个类向量,然后用for循环命名每个类

C++ 我试图创建一个类向量,然后用for循环命名每个类,c++,loops,vector,std,C++,Loops,Vector,Std,我对这个很陌生。我们将非常感谢您的帮助。 我试图创建类对象的向量,然后用for循环命名每个对象。我得到了错误c2679:在第35行没有找到二进制'>>'运算符,该运算符接受类型为“重载函数”的右操作数。cin>>play.p_名称。请帮忙 #include <iostream> #include <string> #include <vector> using namespace std; class Player { private: string

我对这个很陌生。我们将非常感谢您的帮助。 我试图创建类对象的向量,然后用for循环命名每个对象。我得到了错误c2679:在第35行没有找到二进制'>>'运算符,该运算符接受类型为“重载函数”的右操作数。cin>>play.p_名称。请帮忙

#include <iostream>
#include <string>
#include <vector>
using namespace std;

class Player
{
private:
    string player_name;
    int score[18];
public:
    void p_name(string);
    void Player::p_name();
};

void Player::p_name(string name)
{
    player_name = name;
}

int main()
{
    int num_players = 0;
    int i = 0;
    int j = 0;

    cout << "Please enter number of players.\n";
    cin >> num_players;

    vector<Player>player_vector;
    for (int i = 0; i < num_players ; ++i)
    {
        Player play;
        player_vector.push_back(play);
        for (int j = 0; j < num_players; j++)
        {
            cout << "What is the name of Player " << j << ": ";
            cin >> play.p_name;
        }
    }
    system("PAUSE");
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
职业选手
{
私人:
弦乐演奏者的名字;
积分[18];
公众:
无效p_名称(字符串);
无效玩家::p_name();
};
无效播放器::p_名称(字符串名称)
{
玩家名称=姓名;
}
int main()
{
int num_players=0;
int i=0;
int j=0;
cout>num_玩家;
向量机;
对于(int i=0;icout首先
播放。p_name
是一个函数,而不是一个变量;您不能这样分配给它。您必须使用字符串变量作为参数来调用它。您可以执行以下操作:

string name;
cin >> name;
play.p_name(name);
Second,存储名称的
Player
对象不是向量中的对象

当您执行
player\u vector.push\u back(play)
时,您正在将
play
对象的副本放入向量中。由于
play
尚未指定名称,因此向量中的副本也没有名称

稍后,您将在
play
中存储名称,但这不会影响存储在向量中的名称。在循环的底部,
play
将被销毁,并为下一次迭代构造一个新名称(没有名称)。因此,存储在
play
中的名称将被丢弃

您应该移动
player\u向量。设置播放器名称后,将_back(play)
行向下推到,以便复制具有名称的对象,而不是没有名称的对象

Third,您不需要两个嵌套的循环。提示在循环中输入姓名只意味着对于每个玩家(按
i
计算),您将询问每个玩家的姓名(按
j
计算)。如果有5个玩家,则会询问用户25个姓名

摆脱
j
循环,在创建
play
对象之后,只需在
i
循环中询问玩家姓名即可

同样,您的类定义中有一个语法错误:行
void Player::p_name();
应该是
void p_name();
。您只使用
Player::
限定符从类外部引用函数(例如,在几行之后定义函数时).在类定义中,您不必告诉编译器
p_name
Player
类中,因为编译器已经知道了这一点


最后,您不需要在
main
的顶部声明
int i=0
int j=0
变量。您实际上根本没有使用这些变量,因为您在
中为
循环定义了新的
i
j
变量。(当然,如上所述,您根本不需要
j

首先,
播放。p_name
是一个函数,而不是一个变量;您不能这样分配给它。您必须使用字符串变量作为参数调用它。您可以执行以下操作:

string name;
cin >> name;
play.p_name(name);
Second,存储名称的
Player
对象不是向量中的对象

当您执行
player\u vector.push\u back(play)
时,您正在将
play
对象的副本放入向量中。由于
play
尚未指定名称,因此向量中的副本也没有名称

稍后,您将在
play
中存储名称,但这不会影响存储在向量中的名称。在循环的底部,
play
将被销毁,并为下一次迭代构造一个新名称(没有名称)。因此,存储在
play
中的名称将被丢弃

您应该移动
player\u向量。设置播放器名称后,将_back(play)
行向下推到,以便复制具有名称的对象,而不是没有名称的对象

Third,您不需要两个嵌套的循环。提示在循环中输入姓名只意味着对于每个玩家(按
i
计算),您将询问每个玩家的姓名(按
j
计算)。如果有5个玩家,则会询问用户25个姓名

摆脱
j
循环,在创建
play
对象之后,只需在
i
循环中询问玩家姓名即可

同样,您的类定义中有一个语法错误:行
void Player::p_name();
应该是
void p_name();
。您只使用
Player::
限定符从类外部引用函数(例如,在几行之后定义函数时).在类定义中,您不必告诉编译器
p_name
Player
类中,因为编译器已经知道了这一点


最后,您不需要在
main
的顶部声明
int i=0
int j=0
变量。您实际上根本没有使用这些变量,因为您在
中为
循环定义了新的
i
j
变量。(当然,如上所述,您根本不需要
j

首先,
播放。p_name
是一个函数,而不是一个变量;您不能这样分配给它。您必须使用字符串变量作为参数调用它。您可以执行以下操作:

string name;
cin >> name;
play.p_name(name);