У меня есть шаблон класса Foo
, у которого есть метод barMethod
, для которого требуется объект Bar
.Я мог бы заставить каждый отдельный Foo
объект создавать Bar
объекты по мере необходимости, но я не хочу этого делать, потому что это будет медленно, и есть большая вероятность, что разные Foo
объекты могут использовать один и тот же Bar
object.
Учитывая это, я хотел бы иметь объект BarManager
, который имеет существующий набор объектов Bar
.Объекты Foo
могут затем запросить у него объекты Bar
, и если соответствующий объект уже существует, менеджер просто вернет его.Если этого не произойдет, менеджер создаст новый и вернет его.
Мне кажется, что есть две проблемы с реализацией подхода "менеджер".
- Менеджердолжна быть глобальная переменная, которую я предпочел бы не делать.
BarManager
и Bar
оба являются шаблонными классами, поэтому даже если бы я сделал менеджер глобальной переменной / объектом, яЯ не уверен, как это будет работать.Я думаю, я мог бы сделать глобальную переменную void * и приводить ее всякий раз, когда она разыменовывается к соответствующему шаблонному классу, но это кажется действительно уродливым.
Должен быть способ сделать этоэто не так страшно (возможно, с помощью указателя auto
?).Что это?
РЕДАКТИРОВАТЬ: Это программное обеспечение является частью библиотеки, которую я (и, возможно, другие) буду использовать позже, поэтому классы являются шаблонными, а тип шаблона неизвестен a priori .Кроме того, я хочу, чтобы пользователь Foo
делал все как можно более простым, поэтому я не хочу, чтобы вызывающий оператор должен был что-либо делать с BarManager
или Bar
(например, создание экземпляра BarManager
и указание ссылки накаждый Foo
).