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

Created object isn't being saved. Pass by reference

本文关键字:按引用传递 对象 保存 创建      更新时间:2023-10-16

在这个例子中,我试图将一个Player添加到工厂中。我对指针还很陌生,不会误解我做错了什么。

在我的工厂课堂上,我有:

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"实例是不变的。

我是否没有正确引用?如果有人能提供帮助或指明正确的方向,我将不胜感激。

发生的情况是std::vector包含值,而不是引用或指针。所以当你这样做的时候:

 m_player.push_back(player);

向量存储它自己传递给它的Player的副本。一旦你完成了这一操作,对向量的元素采取的任何操作都不应该影响c指向的任何内容。