【发布时间】:2020-11-18 01:58:04
【问题描述】:
最近,我尝试使用纹理练习 SFML。但是,我遇到了一些问题。 SFML 网站告诉我,使用纹理最有效的方法是更新精灵。否则,我们的程序可能会消耗大量内存。我有一个基类和两个派生自它的其他类。如何初始化我的texture 变量,以便派生类可以将它与它们的精灵一起使用?我尝试在Base 类构造函数中初始化纹理并在派生类中调用它,但后来我意识到我的问题并没有解决,因为调用一个构造函数两次是无稽之谈。这个问题对我来说非常重要,因为我使用的状态模式会创建很多动态分配的对象。
#include <iostream>
class Base
{
protected:
sf::Texture texture; //How to initialize this?
sf::Sprite sprite;
public:
Base();
};
class Derived1 : public Base
{
public:
Derived1()
{
sprite.setTexture(texture);
}
};
class Derived2 : public Base
{
public:
Derived2()
{
sprite.setTexture(texture);
}
};
【问题讨论】:
-
如果
texture在多个实例中相同,为什么不将其设为static字段?