2013-02-09 70 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

您認爲它以何種方式發生了變化? – 2013-02-09 12:54:13

+1

爲了讓你指出正確的方向,你應該解釋你想要做的矢量元素。例如,爲什麼你關心「c」是否「保持不變」? – juanchopanza 2013-02-09 12:56:52

+0

嗯,我試圖在工廠或'事實'中添加'c'到m_player的列表,正如我所示。 – Springfox 2013-02-09 12:59:58

回答

0

會發生什麼是std::vector保存值,而不是引用或指針。所以,當你這樣做:

m_player.push_back(player); 

矢量存儲自己的Player傳遞給它的副本。一旦你這樣做了,對矢量的元素採取的任何行動都不應該影響任何指向c的點。