如何定义模板模板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
.
我有一个模板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
.