為什麼需要「typename」關鍵字?
在程式設計中,通常使用巢狀名稱,其中一個實體的名稱 (例如,一個類別)包含在另一個實體(例如,成員函數)的名稱中。雖然這種嵌套通常足以區分正在引用哪個實體,但在某些情況下,編譯器需要明確指定。
「typename」關鍵字的解釋
「typename」 "關鍵字用於明確聲明巢狀名稱參考類型。當在具有未知參數的模板實例中使用巢狀名稱時,該巢狀名稱將變得依賴。
範例考慮以下程式碼:
在這個例子中,「typename」關鍵字是必要的,因為「iterator」巢狀名稱依賴於模板參數「K」。 me」關鍵字,編譯者將不知道「iterator」引用類型「vector::iterator」。
template<class K> class C { struct P {}; vector<P> vec; void f(); }; template<class K> void C<K>::f() { typename vector<P>::iterator p = vec.begin(); }其他需要「typename」的情況
除了上面的例子,其他需要「typename」的情況包括:
引用模板類別中的巢狀類型時使用限定名稱存取類型時以上是C 模板中何時需要「typename」關鍵字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!