簡體   English   中英

如何定義模板類的模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM