Если вы посмотрите на библиотеку, над которой я работал для внедрения зависимостей в C ++ , я недавно добавил пример , который имитирует то, что я создал для реального проекта: возможность напрямую вводить конфигурацию приложения.
Все это прекрасно работает, поскольку конструктор просто запрашивает тип ConfigItem , и он волшебным образом доставляется.
Проблема возникает, когда мне нужно получить доступ ко всем из них одновременно (скажем, для диалога конфигурации).
Глупое решение, которое я придумал, состояло в том, чтобы с помощью препроцессора сгенерировать класс, который получает все элементы конфигурации в конструкторе, как показано здесь .
Эта проблема была бы "хорошо" решена, если бы я мог внедрить инжектор, поскольку мне нужно было бы только сгенерировать код для сбора всех экземпляров ConfigItem, как показано здесь .
Обратите внимание, что все элементы ConfigItems находятся в пределах одной области.
Надеюсь, этот вопрос имеет смысл: как бы вы это сделали?