首頁 > 後端開發 > C++ > 何時以及為什麼在 C 模板中需要'typename”關鍵字?

何時以及為什麼在 C 模板中需要'typename”關鍵字?

Susan Sarandon
發布: 2024-12-19 03:46:11
原創
260 人瀏覽過

When and Why Do You Need the

「typename」關鍵字的語法

當引用作為從屬名稱的巢狀名稱時,在C 中使用「typename」關鍵字,這意味著它嵌套在具有未知參數的模板實例中。此關鍵字明確指定名稱表示類型,特別是當推斷的實體(值、類型或範本)不明確時。

巢狀名稱中「typename」的使用

考慮以下程式碼片段:

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」關鍵字是必要的將p 宣告為型,即P 結構向量的迭代器。如果沒有“typename”,編譯器會將序列向量

::iterator 解釋為表示值或函數的表達式,這是不正確的。

需要「typename」的其他情況

除了巢狀名稱之外,以下還需要「typename」關鍵字場景:

  • 引用模板模板參數的類型時
  • 將模板類別的成員函數宣告為另一個模板類別的友元時
  • 指定模板參數包的類型
  • 將依賴名稱轉換為特定類型時

以上是何時以及為什麼在 C 模板中需要'typename”關鍵字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板