[英]How to define a template of template class
我有一個模板類:
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() > ...)
{
...
}
}
}
編譯器抱怨:錯誤:在此范圍內未聲明'm_value'
有沒有辦法,我可以這樣做或讓我為每個std :: vector類型直接使用A類重新編碼這個函數?
謝謝,
編輯:
我試過這個:
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?
在第一個示例中, m_value
是從屬名稱。
這樣做是為了從B
正確引用它:
this->m_value.size()
也就是說,將你的if
語句轉換為:
if(this->m_value.size() > ...)
編輯部分中的代碼是錯誤的。 B
類和A
類將分別引用它們自己的m_value
副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.