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

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

Patricia Arquette
發布: 2024-12-09 15:51:10
原創
815 人瀏覽過

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中文網其他相關文章!

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