我在这里阅读此 Q/A ,由于我的问题相似但不同,我想知道如何执行以下操作:
假设我有一个基本的非模板非继承类,称为Storage
.
class Storage {};
我希望这个类有一个容器(无序的多图)是我倾向于的地方......它将std::string
为变量类型 T 保存一个名称 id。该类本身不会是模板。但是,添加元素的成员函数将是。要添加的成员函数可能如下所示:
template<T>
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<class T>
typedef std::unorderd_multimap<std::string, T> DataTypes;
template<class... T>
typedef std::unordered_multimap<std::vector<std::string>, std::tuple<T...>> DataTypes;
};
但我似乎无法让 typedef 正确,因此我可以像这样声明它们:
{
DataTypes mDataTypes;
}