如何定义模板模板class

How to define a template of template class

我有一个模板class :

template <class T>
class A 
{
 ...
 protected:
  T m_value;
}

我想用这个 class 为矢量制作一个模板:

template <class T>
class B:public A<std::vector<T>> //no need of space between >> (c++11)
{
 void testSize()
 {
    if(m_value.size() > ...)
    {
        ...
    }
 }
}

编译器抱怨:错误:'m_value' 未在此范围内声明

有什么方法可以做到这一点,或者让我直接使用 A class 为每个 std::vector 类型重新编码此函数?

谢谢,

编辑:

我试过这个:

template <class T>
class B:public A<std::vector<T>> //no need of space between >> (c++11)
{
 void testSize()
 {
    if(m_value.size() > ...)
    {
        ...
    }
 }

 std::vector<T> m_value;
}

编译器不再抱怨了,但是在 class 中调用的 m_value 函数引用了 class B 的 m_value?

在您的第一个示例中,m_value 是从属名称。
只需执行此操作即可在 B:

中正确引用它
this->m_value.size()

也就是把你的if语句变成:

if(this->m_value.size() > ...)

编辑部分的代码反而是错误的。 Class B 和 class A 将分别引用他们自己的副本 m_value.