首頁 >後端開發 >C++ >為什麼我的基底類別模板中的 typedef 在衍生類別模板中無法存取?

為什麼我的基底類別模板中的 typedef 在衍生類別模板中無法存取?

Patricia Arquette
Patricia Arquette原創
2024-12-09 15:51:10847瀏覽

Why is my typedef in a base class template inaccessible in my derived class template?

派生類別模板中無法識別的Typedef

聲明從基類模板A 繼承的派生類模板B 時,預計typedef A 中定義的內容可以在B 中存取。但是,在提供的範例中,存取B 中的Vec_t 失敗並出現錯誤

根據C 標準(14.6.2/3),在類別範本定義和成員定義中,非限定名稱尋找不會擴展到依賴模板參數的基底類別。這表示在衍生類別範本中不允許對基底類別中定義的 typedef 進行非限定存取。

要解決此問題,必須在衍生類別範本中使用 typedef 的全名。這可以透過明確指定基類作用域來實現,如下所示:

透過使用基類作用域明確限定名稱,編譯器可以正確解析對基類中定義的Vec_t typedef的引用模板。

以上是為什麼我的基底類別模板中的 typedef 在衍生類別模板中無法存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn