Я читал этот вопрос/ответ здесь, и поскольку мой вопрос похож, но отличается, я хотел бы знать, как сделать следующее:
Допустим, у меня есть базовый нешаблонный ненаследуемый класс под названием Storage.
class Storage {};
Я бы хотел, чтобы этот класс имел один контейнер (неупорядоченное мультикартирование), к которому я склоняюсь... Он будет содержать std::string
code> для имени id в переменную типа T. Сам класс не будет шаблонным. Однако функция-член для добавления элементов будет. Добавляемая функция-член может выглядеть так:
template
void addElement( const std::string& name, T& t );
Эта функция затем заполнит неупорядоченную мультикарту. Однако каждый раз, когда вызывается эта функция, каждый тип может отличаться. Моя карта будет выглядеть примерно так:
"Hotdogs", 8 // here 8 is int
"Price", 4.85f // here 4.8f is float.
Как бы я объявил такое неупорядоченное мультиотображение, используя шаблоны, переменные параметры, может быть, даже кортеж, любой или вариант... если сам класс не является шаблоном? Я предпочитаю не использовать boost или другие библиотеки, кроме стандартных.
Я пробовал что-то вроде этого:
class Storage {
private:
template
typedef std::unorderd_multimap DataTypes;
template
typedef std::unordered_multimap DataTypes;
};
Но я не могу получить правильные определения типов, чтобы объявить их следующим образом:
{
DataTypes mDataTypes;
}
Подробнее здесь: https://stackoverflow.com/questions/491 ... -container