不改变值的函数
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()
具有类似的签名,您也需要更改它。
我正在编写一个 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()
具有类似的签名,您也需要更改它。