2013-02-09 46 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的点。

相关问题