gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:25:19 26 4
gpt4 key购买 nike

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

但是这个函数似乎没有正常工作或者没有正确分配值。

这是构造函数中的代码:

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);
}

Sprite 值在名为 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");
}

Wolf 源自 Monster。 Monster 派生自 Entity。对 loadSprite 的调用有效。

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

最佳答案

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

我通过向 Entity 类添加一个 sf::Texture 并将该纹理分配给 Sprite 来修复它。

关于c++ - 变量没有通过(可能是范围结束),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38333591/

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