Экземпляры плагина могут потребоваться, чтобы их состояние синхронизировалось с внешними компонентами за пределами контроля над проектом (например, облачный API), поэтому копирование не является повышенным, что он будет нарушать отношения 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: 1: где одна копия изменяет внешнее состояние, но другая копия все еще имеет старое состояние). Движение экземпляров не будет проблемой.
Для фреймворка я планирую реализовать метод RegisterPlugin () , который добавляет экземпляр плагина к члену типа std :: set или аналогичный (любой линейный тип, который может удерживать экземпляры плагина или его подкласс). Структура на творении. Что -то вроде: < /p>
Код: Выделить всё
Plugin::Plugin(Framework & framework)
: m_framework(framework)
{
framework.RegisterPlugin(*this);
}
Как я могу достичь того, что я хочу? Держать его подкласс), без естественного порядка сортировки? Alternatives:
- A vector/list/whatever instead of set would also do – it is unlikely that anyone would ever attempt to insert duplicates, I just need the size to be flexible
- Wrapping the Plugin class into another standard type (which?)
Какое из доступных решений будет работать в конструкторе экземпляра, который будет вставлен? (Альтернатива будет фабричным методом для каждого подкласса.)
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-creation
Мобильная версия