在C ++中公开模板类参数的类型名称

时间:2015-09-02 10:35:17

标签: c++ templates avr-gcc

[使用avr-gcc / Arduino C ++编译器!]

假设我有一个Array模板类,其中T是数组中项目的类型。

template<class T, const unsigned char MaxItems>
class Array
{
public:
   typedef T ItemT;
   ....
}

我想在其他类中使用那个类型T,比如说一个Collection类,就像这样

template<typename ArrayT>
class Collection
{
public:
    Collection(ArrayT& array)
        : _array(array), _count(0)
    { }

    void Add(ArrayT::ItemT item) { ... }
...
}

并像这样使用它:

Array<int, 5> array;
Collection<Array<int, 5> > collection(array);

因为我不想在Collection上为Array中使用的相同ItemT添加额外的模板参数。

显然使用这样的typedef不起作用:

  

警告C4346:'ArrayT :: ItemT':从属名称不是带有'typename'的类型前缀来表示类型

  

错误C2061:语法错误:标识符'ItemT'

这可能吗?

0 个答案:

没有答案