Я работаю над простым проектом игры в кости, который требует от меня создания нескольких экземпляров пользовательского класса.
vector <Player> playerList;
playerList.resize(totalNumPlayers); //totalNum is grabbed from cin
for (int x = 0; x < totalNumPlayers; x++)
{
playerList.at(x).setname("Player" + to_string(x + 1));
//playerList[x] = p;
playerList.at(x).printName();
cout << playerList[0].returnName() << " " << playerList[1].returnName() << " " << playerList[2].returnName() << endl;
}
Класс игрока:
//Declarations
string playerName;
int playerChips;
Player::Player()
{
//Default constructor for when player is created
playerChips = 3;
playerName = "DEFAULT_PLAYER_NAME";
}
void Player::setname(string var)
{
playerName = var;
}
string Player::returnName()
{
return(playerName);
}
void Player::printName()
{
cout << playerName << endl;
}
void Player::addChips(int x)
{
playerChips += x;
}
void Player::removeChips(int x)
{
playerChips -= x;
}
int Player::returnChips()
{
return(playerChips);
}
Я заметил, что на каждой итерации в течение первоначального цикла forloop значение playerList [x] всегда одинаково.Например, если totalNumPlayers = 3, playerList [0], playerList [1] и playerList [2] влияют на строку setName.Поэтому, когда я использую cout для PL 1,2 и 3, он всегда печатает
Player1, Player1, Player1, затем Player2, Player2, Player2 и т. Д.
Почему ссылки на каждый индексне уникален для собственного объекта?