首頁 > 後端開發 > C++ > 模板類別如何從其依賴基底類別繼承和存取受保護的成員?

模板類別如何從其依賴基底類別繼承和存取受保護的成員?

Patricia Arquette
發布: 2024-12-02 05:55:11
原創
219 人瀏覽過

How Can a Templated Class Inherit and Access Protected Members from its Dependent Base Class?

模板化繼承中的依賴名稱解析

在 C 中,存取繼承變數的能力取決於繼承的類型和上下文。考慮下面的程式碼,其中 Bar 繼承自模板類別 Foo:

在這種情況下,問題就出現了:Bar 可以存取 Foo 的受保護變數 a 嗎?

標準合規性和基本原理

新版本的 GNU C 編譯器遵循 C 標準,其中規定:模板中的非限定名稱是非相關的。這意味著在定義模板時必須解析這些名稱。但是,由於當時依賴基底類別(Foo)的定義未知,因此無法解析 Bar 中的不合格名稱。

解:明確名稱解析

要存取 a,Bar 必須明確指定其限定名稱:Foo::a。或者,可以在Bar 中使用“using”聲明:

總之,雖然Bar 從Foo 繼承受保護的變量a 看起來很直觀,但C 標準規定這是唯一可能的通過顯式名稱解析或“使用”聲明。這確保了不同模板實例化之間一致且定義良好的行為。

以上是模板類別如何從其依賴基底類別繼承和存取受保護的成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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