不改变值的函数

Function which doesn't change the value

我正在编写一个 2D 引擎,这是我的问题: 每个图块都有一个 'texture' 数字(0:网格,1:草,等等......) 当我尝试像这样更改数字时:

maps[currentMapID].getLayerArray()[l].getTileArray()[t].setTexture(currentSelectedTexture);

(l、t 等...来自 'for' 循环。)

没有变化,numero 仍然是 0。

这里是.setTexture(..)的代码:

void tile::setTexture(int t)
{
    numTexture = t;
}

当我创建测试图块时,此代码完全有效。

我的代码结构(classes)是:

Map > layer > tile. => all of them in a class wich handle graphics.

我怀疑问题来自于此(对于 map class 也是如此,它们每个都有一个 std::vector<layer> 和类似的功能 -> ):

std::vector<tile> layer::getTileArray()
{
    return tiles;
}

它 return 是我 class 的 std::vector<layer> 还是副本?如果是副本,则可以解释图块的纹理编号保持不变。

如果是副本,我怎样才能将 tile.numTexture 更改为另一个 class ?指针?参考资料?(这个我不是很懂)

我也检查了currentSelectedTexture,那里没有问题。

函数

std::vector<tile> layer::getTileArray()
{
    return tiles;
}

return一个副本,你最终修改了副本的内容。

将其更改为 return 参考。

std::vector<tile>& layer::getTileArray()
{
    return tiles;
}

如果函数 getLayerArray() 具有类似的签名,您也需要更改它。