在此程式碼片段中:
較新版本的GNU C 編譯器(例如3.4) .6 和4.3.2)報告錯誤:
在 Bar 特化中存取基類 Foo 的受保護變數 a 時。
較新的 GCC 版本遵循 C 標準,它指定模板中的非限定名稱是非相關的,必須在模板定義期間解析。由於此時可能不知道依賴基底類別的定義,因此無法解析不合格的名稱。
防止存取依賴基底類別中的不合格繼承成員可確保範本定義明確並且獨立於其專業化。這確保了模板的語義對於不同的專業化保持一致。
要存取Bar 中繼承的變量,您可以使用限定名稱:
或者,您可以使用using 宣告:
此語法通知編譯器Bar 的作用域引用了Foo 基底類別的a 變數。
以上是如何從 C 中的模板化父類別存取繼承的受保護變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!