我'我有一个模板类:
template <class T>
class A
{
...
protected:
T m_value;
}
我想使用此类为矢量制作模板:
template <class T>
class B:public A<std::vector<T>> //no need of space between >> (c++11)
{
void testSize()
{
if(m_value.size() > ...)
{
...
}
}
}
编译器抱怨:错误:&#39; m_value&#39;未在此范围内声明
有没有办法可以做到这一点,还是让我直接使用A类为每个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;
}
编译器不再抱怨了,但是在A类函数中调用的m_value是否引用了B类的m_value?
答案 0 :(得分:3)
在您的第一个示例中,m_value
是一个从属名称
只需执行此操作即可在B
:
this->m_value.size()
也就是说,将您的if
语句转为:
if(this->m_value.size() > ...)
编辑部分中的代码是错误的。课程B
和课程A
将分别引用自己的m_value
副本。