模板化繼承中的依賴名稱解析
在 C 中,存取繼承變數的能力取決於繼承的類型和上下文。考慮下面的程式碼,其中 Bar 繼承自模板類別 Foo:
在這種情況下,問題就出現了:Bar 可以存取 Foo 的受保護變數 a 嗎?
標準合規性和基本原理
新版本的 GNU C 編譯器遵循 C 標準,其中規定:模板中的非限定名稱是非相關的。這意味著在定義模板時必須解析這些名稱。但是,由於當時依賴基底類別(Foo)的定義未知,因此無法解析 Bar 中的不合格名稱。
解:明確名稱解析
要存取 a,Bar 必須明確指定其限定名稱:Foo
總之,雖然Bar 從Foo 繼承受保護的變量a 看起來很直觀,但C 標準規定這是唯一可能的通過顯式名稱解析或“使用”聲明。這確保了不同模板實例化之間一致且定義良好的行為。
以上是模板類別如何從其依賴基底類別繼承和存取受保護的成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!