Я начну с контекста, который приведет к актуальному вопросу.
Я пытаюсь создать класс, каждый экземпляр которого будет управлять тем, как данные связаны друг с другом в объекты.Класс должен предпочтительно содержать методы:
class DataManager {
Object CreateObject();
void DestoryObject();
template<typename DataType>
DataType* AddDataToObject(Object o)
template<typename DataType>
DataType* GetDataForObject(Object o)
template<typename DataType>
void RemoveDataFromObject(Object o)
};
Объект в приведенном выше коде - это просто некоторый идентификатор - int на данный момент и не содержит никаких данных или методов (это не должно изменяться).Используемый выше DataType может быть в основном любым классом, однако общая ситуация такова, что это просто структура без методов.Полный список вещей, которые можно использовать в качестве DataType, известен во время компиляции, но его не следует кодировать, так как он меняется довольно часто.
Две цели, которые я пытаюсь достичь, это: - ремонтопригодность / скорость - пользователь должениметь возможность добавлять новые структуры DataType без изменения этого кода - Скорость - должна быть максимально быстрой
Структура данных в таком случае будет выглядеть примерно так:
map< DataTypeType, map< Object, ContainerBase* > >
Итак, как этого добиться?Повысит ли это справку :: mpl :: map и как?
По сути, это должно быть возможным, поскольку все типы данных известны во время компиляции.