Что является хорошим способом совместного использования объекта между классами?

Как лучше всего разделить экземпляр объекта между несколькими классами в иерархии классов? У меня следующая ситуация:

class texture_manager;

class world {
    ...
    std::vector<object> objects_;
    skybox skybox_;
}

В настоящее время я реализовал texture_manager как синглтон, и клиенты вызывают его метод создания экземпляров из любого места в коде. texture_manager должен использоваться объектами в векторе objects_ , skybox_ , а также, возможно, другими классами, которые могут или не может быть частью мирового класса . Поскольку я пытаюсь ограничить использование синглтонов в моем коде, порекомендуете ли вы какие-либо альтернативы этому подходу? Одно из решений, которое пришло в голову, - передать ссылку texture_manager в качестве аргумента конструкторам всех классов, которым требуется доступ к ней. Спасибо.

10
задан Dan Nestor 19 November 2011 в 22:24
поделиться