シングルトンパターンと一般的な「リソースマネージャー」を置き換える試みで、私は解決策を思いつきました。リソースを静的で保護します。そのリソースは、継承されたクラスのすべての子の間で共有されます。それは機能しますが、それが先に進むための良い方法であるかどうかはわかりませんでした。これが私がしていることを表現するための少しのコードです(ここのリソースはsf :: Textureです):
class Foo {
public:
Foo() {
if(m_texture == nullptr) {
//Création et chargement de la texture
m_texture = std::unique_ptr<sf::Texture>(new sf::Texture());
m_texture->loadFromFile("...");
}
}
void draw(sf::RenderWindow& window) = 0;
protected:
static std::unique_ptr<sf::Texture> m_texture = nullptr;
};
class Bar : public Foo {
public:
Bar()
: m_sprite(*m_texture) {}
void draw(sf::RenderWindow& window) {
window.draw(m_sprite);
}
private:
sf::Sprite m_sprite;
};
そうすれば、私のリソースはすべての子で共有され、一度だけ初期化されます。参照を通じてどこにでも持ち運べるシングルトンまたはリソースマネージャーを置き換えるのは良い解決策ですか。ありがとうございました!