Хранение нескольких типов в контейнере членов классаC++

Программы на C++. Форум разработчиков
Anonymous
Хранение нескольких типов в контейнере членов класса

Сообщение Anonymous »

Я читал этот вопрос/ответ здесь, и поскольку мой вопрос похож, но отличается, я хотел бы знать, как сделать следующее:

Допустим, у меня есть базовый нешаблонный ненаследуемый класс под названием 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

Вернуться в «C++»