2013-10-17 24 views
1

我收到以下錯誤: 「非專業化的類模板不能作爲模板參數‘_Kty’模板參數,預計一個真正的類型」C++容器是否可以包含模板對象?收到錯誤

我試圖編譯的代碼是什麼像這樣:

template <typename T> class TypeX; 

template <typename T> 
class TypeY 
{ 

... 
    private: 
    std::set<TypeX> m_tree; 
} 

順便說一句,包括「TypeX.h」(這是一個模板類),而不是向前聲明不會改變任何東西。

我從這個錯誤中收集到的是,由於TypeX是「非專業化的」 - 即「T」沒有定義,TypeX仍然是模板形式,所以它不能作爲std :: set的基礎。但是我真的希望TypeX成爲T的一個模板,並且在TypeY中,我可以初始化一個新的TypeX(T的模板),然後將該新對象插入到m_tree中。

可以這樣做嗎?多謝你們。

回答

5

TypeX需要模板參數。你是不是給它一個當你創建std::set

您可以更改您的代碼更多的東西像這樣

std::set< TypeX<T> > m_tree; 
+0

我不是上來就C++標準的最新版本,但不早版本要求在兩個'>'之間用空格來書寫? – jwodder

+0

@jwodder固定以防萬一。 – Caesar

+0

真棒,感謝凱撒。這解決了這個問題。兩個後續的問題。 (因爲我不能在這裏插入新的行) – Phoeniyx

相關問題