变量未传递低谷(可能是范围的结束)
Variable not passing trough (maybe end of scope)
所以我试图通过一个函数分配一个变量。函数中的代码通常存在于构造函数中,但由于我不想在构造函数中为继承同一父级的所有类编写它,所以我创建了一个函数。
但是该功能似乎无法正常工作或正确分配价值。
这是构造函数中的代码:
sf::Texture holdTexture;
sf::Sprite holdSprite;
Wolf::Wolf(float speed, Player& p) :
Monster(speed, p)
{
holdTexture.loadFromFile("Assets\Wolf.png");
sprite.setTexture(holdTexture);
sprite.setOrigin(24,22);
}
子画面值在名为 Entity.h 的父-父-父中声明
class Entity {
public:
Entity();
sf::Sprite sprite;
public:
sf::Vector2f getEntityCoords();
protected:
void loadSprite(const std::string &filename);
};
它具有以下功能:
void Entity::loadSprite(const std::string &filename) {
sf::Texture holdTexture;
holdTexture.loadFromFile(filename);
sprite.setTexture(holdTexture);
}
所以现在我的构造函数看起来像:
Wolf::Wolf(float speed, Player& p) :
Monster(speed, p)
{
loadSprite("Assets\Wolf.png");
}
狼源自怪物。怪物派生自实体。并且调用加载精灵有效。
但现在精灵只是变成了一个白色的盒子。正如标题所说,这可能是范围的结束问题,但我对 c++ 没有足够的经验来确定。环顾四周也没有给我答案。我希望这不是一个愚蠢的问题。如果您需要查看更多代码,请询问,如果有人可以帮助:),那就太好
只要精灵存在,精灵就需要存在现有的纹理。一旦该方法结束,sf::Texture holdtexture
就会从内存中清除,因此它会显示一个白色方块。
我通过将 sf::Texture 添加到实体类并将该纹理分配给精灵来修复它。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 如何使用 AWS C++ 开发工具包在给定的开始和结束日期范围内列出 S3 中的文件
- 是否可以在基于范围的 for 循环中使用模板化的开始/结束方法
- 防止在宏中定义的匿名变量的解构,直到范围结束
- 如何创建从开始和结束迭代器的范围
- 指针范围结束后,C 在堆上访问对象
- 在Ubuntu上使用C 中的pthreads时.主线程范围从哪里开始和结束
- 范围之后的交易结束
- 将remove_copy_if与ostream_iterator一起使用时确定复制范围的结束
- 可以基于范围的循环知道结束
- 无法使用非成员开始和结束函数写入基于范围
- 为什么析构函数在对象引用作为参数传递时函数范围结束后调用
- 在范围结束后提升共享指针"runtime error"
- 变量未传递低谷(可能是范围的结束)
- 如何在创建范围结束时自动从单一实例管理器类中删除shared_ptr
- 使用async结束线程并超出其未来的范围是否安全?
- Vector迭代器+偏移量超出范围,在while循环结束时给出错误