2015-06-04 33 views
0

假設我有一個模板類,無論出於何種原因超出了這個問題的範圍,有一個嵌套類聲明:模板類的嵌套類定義是否屬於ipp文件?

// outer.hpp 

template <typename T> 
class Outer 
{ 
    class X; 

    void foo(); // this is defined in an ipp file 
}; 

// should this also go into the ipp file? 
template <typename T> 
class Outer<T>::X 
{ 
}; 

我有點困惑,我應該把的X定義。它是否屬於ipp文件以及成員函數定義,還是它在頭文件中有意義?

回答

0

只要清楚,就編譯而言並不重要。

一般來說,所有的聲明都應該在頭文件中,因爲這樣可以保持在頭文件中可以找到類的用法的模式。

例如,如果您使用Doxygen,您會希望它生成有關您的內部類的文檔(無需更改設置)。

+0

*所有定義應在標題中* - 你的意思是所有_declarations_?如果沒有,你能否詳細說明,因爲我認爲通常的做法是將定義放入'ipp'文件中? – arman

+0

是的,編輯,對此感到遺憾。雖然,我從來沒有使用ipp文件。只需要在一個地方使用模板代碼。 – Carl

+0

好吧,那麼'X'的定義呢 - 它應該保留在頭文件中還是與其餘定義一起進入'ipp'文件? – arman