2013-02-09 4 views
0

Я пытаюсь добавить игрока на завод в этом примере. Я довольно новичок в указателях и не понимаю, что я делаю неправильно.Созданный объект не сохраняется. Передайте по ссылке

в моем заводе классе у меня есть:

void Factory::addPlayer(const Player& player) 
{ 
    m_player.push_back(player); 
} 

и в программе я пытаюсь добавить его в качестве такового:

Factory* fact = new Factory(); 

Player* c = new Player(1, 2, 100, "Name"); 

fact->addPlayer(*c); 

Однако, когда я отладки, в «C» экземпляр не меняется.

Не правильно ли я указал ссылку? Если бы кто-нибудь мог помочь или указать в правильном направлении, я был бы признателен за любую помощь.

+0

Как вы ожидаете, что это изменилось? –

+1

Чтобы указать вам в правильном направлении, вы должны объяснить, что вы хотите сделать с элементами вектора. Например, почему вас беспокоит, что 'c'« неизменен »? – juanchopanza

+0

Ну, я пытаюсь добавить «c» в список m_player в Factory или «факт», как я показал. – Springfox

ответ

0

Что происходит, так это то, что std::vector содержит значения, а не ссылки или указатели. Так что, когда вы это делаете:

m_player.push_back(player); 

вектор сохраняет свою собственную копию Player переданного ему. Как только вы это сделаете, никакие действия, предпринятые над элементами вектора, не должны влиять на то, что указывает c.

Смежные вопросы