2017-08-29 89 views
3

我找不出正確的語法來爲嵌套類編寫正確的模板。我想這樣做嵌套類C++的正確模板

template <typename T> 
class list { 
private: 
    class node { 
    public: 
     T value; 
     node(); 
     ~node(); 
    }; 

public: 
    node<T> *H; 
    list(); 
    ~list(); 
}; 

我想有一個類來表示外部類中的每個元素,所以我想有外內要隱藏的內部類。這可能嗎?或者我應該使用不同的方法?

+1

你想讓內部類也成爲模板嗎? –

+1

「節點」不是模板。 'node * H;'應該可以正常工作。 – nwp

+0

在一個完全不相關的說明中,如果您只有一個只有公共成員的類,請考慮使用'struct'來代替。 'class'和'struct'是一樣的,只是默認的可見性不同(''private'''''''''''''''''''''公共'')。 –

回答

1

最終我一直在尋找的是這樣的。

template <typename T> 
class list { 
private: 
    template <typename U> 
    class node { 
    public: 
     U value; 
     node(); 
     ~node(); 
    }; 

public: 
    node<T> *H; 
    list(); 
    ~list(); 
}; 

感謝剛發佈此答案的用戶。

7

你不需要指定內部類的模板參數(因爲它不是爲模板類中聲明):

template <typename T> 
class list { 
private: 

    class node { 
    public: 
     T value; 
     node(); 
     ~node(); 
    }; 

public: 
    node *H; // <<<<<< 
    list(); 
    ~list(); 
}; 
+0

我認爲你應該解決擁有'private'嵌套類的'public'成員不是一個好主意。 – muXXmit2X

+0

@ muXXmit2X客戶端可以使用'auto'來訪問它。 – user0042

+0

我希望它是一個模板類,但我不知道我需要把另一個模板。我得到的第一個答案是正確的,但現在它似乎不見了 – fedemengo