变量未传递低谷(可能是范围的结束)

Variable not passing trough (maybe end of scope)

本文关键字:范围 结束 变量      更新时间:2023-10-16

所以我试图通过一个函数分配一个变量。函数中的代码通常存在于构造函数中,但由于我不想在构造函数中为继承同一父级的所有类编写它,所以我创建了一个函数。

但是该功能似乎无法正常工作或正确分配价值。

这是构造函数中的代码:

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 添加到实体类并将该纹理分配给精灵来修复它。