变量没有通过(可能是范围结束)

Variable not passing trough (maybe end of scope)

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

但是该函数似乎无法正常工作或正确分配值。

这是构造函数中的代码:

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

的 parent-parent-parent 中声明
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");
}

狼派生自怪物。 Monster 派生自 Entity。对 loadSprite 的调用有效。

但是现在精灵只是变成了一个白色的盒子。正如标题所说,这可能是范围问题的终结,但我对 c++ 的经验不足,无法确定。环顾四周也没有给我答案。我希望这不是一个愚蠢的问题。如果您需要查看更多代码,请询问,如果有人可以提供帮助,那就太好了:)

只要精灵存在,精灵就需要存在的纹理。一旦该方法结束,sf::Texture holdtexture 将从内存中清除,因此它会显示一个白色方块。

我通过向实体 class 添加 sf::Texture 并将该纹理分配给精灵来修复它。