如何根据用户输入在数组中分配对象

C++: How do I assign an object within an array based on user input?

本文关键字:数组 分配 对象 输入 何根 用户      更新时间:2023-10-16

这里我有一个代理数组,我想初始化一个玩家数组。一个特工只知道他的名字。用户必须输入球员的姓名、球衣号码和球员的经纪人。在这种情况下,我希望多个玩家能够拥有相同的代理,所以我使用了指针。

// Default constructor = Agent(std::string = "")
Agent agents[2] = {"Larry", "Joe"};
// Default constructor = Player(std::string = "", int = 0, Agent* = 0)
Player players[3];
initializePlayers(players, 3);
void initializePlayers(Player players[], int playerSize)
{
    string playerName, agentName;
    int playerNum;
    Agent *myAgent;
    for(int i = 0; i < playerSize; i++)
    {
        cout << "Please enter the player's name: ";
        getline(cin, playerName);
        cout << "Please enter the player's number: ";
        cin >> playerNum;
        cout << "Please enter the player's agent: ";
        getline(cin, agentName);
        cin.ignore(1000, 'n');
        // If the agent's name matches one of the names in agents array
        // assign that agent to this player
        Player tempPlayer(playerName, playerNum, myAgent);
        players[i] = tempPlayer;
    }
}

在我的注释中,我需要分配myAgent。例如,如果用户为第一个玩家输入"Larry",那么Larry应该是他的经纪人。如果用户为接下来的两个玩家输入"Joe",他们应该都有Joe作为他们的代理。我该如何做到这一点?即使是一个让我开始的想法也会有所帮助。谢谢你。

首先你最好使用这样的std::array:

// Default constructor = Agent(std::string = "")
std::array<Agent, 2> agents = { Agent("Larry"), Agent("Joe") };

然后您可以像这样搜索代理:

myAgent = nullptr;
for (unsigned i = 0; i < agents.size(); ++i)
{
    if (agentName == agents.getName())
      myAgent = &agents[i];
}