c++ - 更新向量内的对象?
问题描述
所以我正在更新“导弹”矢量列表。但是,当我尝试更改坐标:x 和 y 时,它们不会改变吗?我不明白为什么,尤其是当其他所有内容都更新时?
private:
std::vector<Missile> missiles;
void shoot(Spawner spawn)
{
// 50.0f/3, 200.0f/3
Missile missile = Missile(x + 90.5f, y, image.shader);
missiles.push_back(missile);
}
void update(GLFWwindow* window, Spawner spawn)
{
input(window, spawn);
updatePosition(x, y);
for (int i = 0; i < missiles.size(); i++)
{
Missile index = missiles.at(i);
index.update();
}
}
// Inside the missile class:
public:
Missile(float x, float y, Shader shader)
: Sprite(x, y, 50.0f/3, 200.0f/3, shader, "res/Textures/Missile.png", 0.0f, 0.0f, 0.25f, 1.0f)
{
}
void update()
{
x = 100.0f;
updatePosition(x, y);
std::cout << "Y: " << y << std::endl;
}
void render()
{
image.draw();
}
解决方案
在这条线上:
Missile index = missiles.at(i);
您正在制作 的副本,Missile
因此向量内的原始内容不会被修改。
相反,您可以这样做:
Missile &index = missiles.at(i);
引用向量中的。Missile
或者简单地说:
missiles.at(i).update();
推荐阅读
- c++ - 为稀疏矩阵类编写 C++ 迭代器
- javascript - 我必须使用什么脚本来运行 A/B 测试而不是 Google 优化中的拆分 URL?
- javascript - 加密 Javascript - 解密 Java
- r - 在预测中操纵 xreg 影响
- dictionary - 在 F# 中批量添加到地图
- android - 如何在 ontouchListener 中更改按钮背景颜色?
- python - 使用 Python Pandas 使用 2 个条件返回计数
- php - Docker 无法启用 php 扩展
- api - 空手道功能文件的 JUnit 5 运行器中的并行执行没有停止
- ajax - 访问 Ajax 请求数据