2016-10-31 3 views
0

Здесь у меня есть массив агентов, и я хочу инициализировать массив игроков. У агента есть только его имя. Пользователь должен ввести имя игрока, номер трикотажа и агент игрока. В этом случае я хотел, чтобы у нескольких игроков был тот же агент, поэтому я использовал указатель.C++: Как назначить объект в массиве на основе ввода пользователем?

// 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. Например, если пользователь входит в «Ларри» для первого игрока, Ларри должен быть его агентом. Если пользователь вводит «Джо» для следующих двух игроков, они должны оба иметь Джо в качестве своих агентов. Как это сделать? Даже идея, чтобы начать меня, поможет. Спасибо.

+0

Используйте цикл для поиска правильного агента. Найдя, назначьте его. Конец истории. –

+0

или используйте карту string-> Agent – pm100

+0

Это не связано с вашим вопросом, но см. Http://stackoverflow.com/questions/10553597/cin-and-getline-skipping-input. В противном случае вы получите неправильное значение 'agentName'. – Barmar

ответ

0

Во-первых, вы должны лучше использовать 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]; 
} 
Смежные вопросы