И это всё МОЁ

Пишу игру на плюсах и SFML и в процессе написания менеджера ресурсов столкнулся с проблемой. Подробное описание:

  • Есть шаблонный класс ResourceManager, хранит ресурсы в std::unordered_map в виде указателя (std::shared_ptr) и ключа.
  • Ресурсы хранятся внутри zip архива, поэтому я написал класс-наследник от sf::InputStream, благо все классы (Texture, Shader, SoundBuffer, Font, Music) имеют метод loadFromStream.


Проблема заключается в том, что sf::Music и sf::Font при этом не загружают ресурс в память полностью (как все остальное), а продолжают читать из стрима по частям.

Получается, экземляр стрима для них тоже нужно где-то хранить и уничтожать только после вызова деструктора объекта класса, читающего из этого стрима.

Как можно это все элегантно оформить? Пока на ум приходит только засунуть это все в std::pair.








 ,