gpt4 book ai didi

c++ - 在以下情况下,纹理是如何被破坏的?

转载 作者:搜寻专家 更新时间:2023-10-31 01:40:09 25 4
gpt4 key购买 nike

在 SFML 教程中,据说当你这样做时纹理会被破坏:-

sf::Sprite loadSprite(std::string filename) 
{
sf::Texture texture;
texture.loadFromFile(filename);

return sf::Sprite(texture);
} // error: the texture is destroyed here

正确返回时纹理是如何销毁的?

最佳答案

对象 texture 在其范围结束时被销毁 - 这里是函数的末尾。与堆上的数据(例如,您使用 new 创建)形成对比的是,堆栈分配变量始终如此。

当你创建一个 Sprite 时,如果你仔细观察 its constructor signature ,您实际上从不复制纹理,而只是给它一个引用。这意味着一旦纹理对象被销毁,你就会得到一个白色 Sprite as explained in the tutorial .

关于c++ - 在以下情况下,纹理是如何被破坏的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30135247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com