变量没有通过(可能是范围结束)
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 并将该纹理分配给精灵来修复它。
所以我试图通过函数分配一个变量。函数中的代码通常存在于构造函数中,但因为我不想在构造函数中为所有继承相同 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 并将该纹理分配给精灵来修复它。