未保存创建的对象。按引用传递
Created object isn't being saved. Pass by reference
在这个例子中,我试图将一个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
指向的任何内容。
相关文章:
- 按值传递变量与按引用传递变量具有相同的结果
- 获取 std::函数以推断按引用传递/按值传递
- C++/11 auto 关键字是在更有效时推导参数进行按引用传递,还是始终按值传递?
- 使用 enable_if 在按值传递与按引用传递之间更改函数声明
- 按引用传递和按地址传递之间的差异
- 防止在按值传递对象(继承)时进行切片
- C++按引用传递还是按值传递?
- 可移动但不可复制的对象:按值传递还是按引用传递?
- 使用增量运算符按引用传递
- C++函数,按引用传递
- 按引用传递和动态内存分配之间的区别是什么
- 通过引用传递对象时是否调用复制构造函数?
- 通过查看程序集来比较按值传递与按引用传递性能
- 通过引用传递对象和基元之间的区别
- 在形式参数列表中自动使用 const 和按引用传递的任何明显后果
- 按引用传递可避免对象切片
- 按值传递对象时与按引用传递对象时运行时较慢
- 在重载函数中按引用传递对象与按值传递对象
- 当按引用传递参数存储在被调用方对象中,然后被调用方删除时会发生什么情况
- 未保存创建的对象。按引用传递