不改变值的功能

Mad*_*adz 1 c++ sfml

我正在编写一个2D引擎,这是我的问题:每个瓷砖都有一个'纹理'数字(0:网格,1:草等......)当我尝试改变这样的数字时:

maps[currentMapID].getLayerArray()[l].getTileArray()[t].setTexture(currentSelectedTexture);
Run Code Online (Sandbox Code Playgroud)

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

什么都没有改变,数字仍然是0.

这是代码.setTexture(..):

void tile::setTexture(int t)
{
    numTexture = t;
}
Run Code Online (Sandbox Code Playgroud)

创建测试图块时,此代码完全正常工作.

我的代码(类)的结构是:

Map > layer > tile. => all of them in a class wich handle graphics.
Run Code Online (Sandbox Code Playgroud)

我怀疑问题来自于此(同样map class,每个人都有一个std::vector<layer>类似的功能 - >):

std::vector<tile> layer::getTileArray()
{
    return tiles;
}
Run Code Online (Sandbox Code Playgroud)

它会std::vector<layer>从我的班级或副本中归还给我吗?如果它是副本,它可以解释图块的纹理编号保持不变.

如果它是副本,我怎么能改变tile.numTexture另一个类?指针?参考文献?(我真的不明白这个)

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

R S*_*ahu 6

功能

std::vector<tile> layer::getTileArray()
{
    return tiles;
}
Run Code Online (Sandbox Code Playgroud)

返回副本,最后修改副本的内容.

更改它以返回参考.

std::vector<tile>& layer::getTileArray()
{
    return tiles;
}
Run Code Online (Sandbox Code Playgroud)

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