创建的对象未保存。通过引用传递

时间:2013-02-09 12:52:43

标签: c++ oop instance

我正在尝试在此示例中将播放器添加到工厂。我对指针很新,不知道我做错了什么。

在我的工厂课程中我有:

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'实例没有改变。

我没有正确引用吗?如果有人可以帮助或指出正确的方向,我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

会发生的是std::vector保存值,而不是引用或指针。所以当你这样做时:

 m_player.push_back(player);

向量存储自己传递给它的Player副本。完成后,对矢量元素采取的任何操作都不会影响c指向的任何内容。