C++ C++;通用变量
我正在尝试创建泛型变量,如下所示:C++ C++;通用变量,c++,C++,我正在尝试创建泛型变量,如下所示: Class Foo { template<typename T> boost::unordered_map<int, T> items; template<typename T> boost::unordered_map<int, T>& get() { return items<T>; } } // .... void main
Class Foo {
template<typename T>
boost::unordered_map<int, T> items;
template<typename T>
boost::unordered_map<int, T>& get() {
return items<T>;
}
}
// ....
void main() {
Foo foo;
SomeClass d();
foo.get<SomeClass>().insert(std::make_pair(1, d));
}
Class-Foo{
模板
boost::无序的地图项目;
模板
boost::无序映射和get(){
退货项目;
}
}
// ....
void main(){
富富,;
类d();
foo.get().insert(std::make_pair(1,d));
}
有什么方法可以做到这一点吗?是的,通过制作整个
Foo
a类模板:
template<typename T>
class Foo
{
using items_map_t = std::unordered_map<int, T>;
items_map_t items;
items_map_t& get() const
{
return items;
}
};
模板
福班
{
使用项目\u映射\u t=std::无序\u映射;
项目(地图)项目;;
项目映射获取()常量(&t)
{
退货项目;
}
};
您为什么需要为此制作一个类?映射已经可以很容易地返回值了,那么为什么要创建一个包含映射的类呢?如果您想实际修改该类,则需要返回一个引用,或者只需更改copy@meneldal因为对于每个foo实例,它都应该是自己的无序映射。我想如果您真的需要一组任意类型,可以使用类型擦除(以及映射映射)是一个函数声明。您的foo类使得访问映射更加不方便。我不想让整个foo类成为一个函数声明template@ZilbermanRafael那么如何实例化items
成员变量?您还不能拥有模板成员变量(或模板变量),尽管它是随建议的标准提供的,但我不知道它将如何(或是否)与成员变量一起工作。