c++通用变量

C++ Generic Variable

本文关键字:变量 c++      更新时间:2023-10-16

我正在尝试创建通用变量,像这样:

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));
}

有什么办法可以做到吗?

是的,通过使整个Foo类成为模板:

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;
    }
};