」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼模板類別需要聲明具有不同模板參數的友元模板類別?

為什麼模板類別需要聲明具有不同模板參數的友元模板類別?

發佈於2024-11-13
瀏覽:531

Why Does a Templated Class Need to Declare a Friend Templated Class with a Different Template Parameter?

帶有Friend 模板類別的模板類別:破解機制

在此場景中,您將定義一個二叉樹類模板(BT) 和一個類別模板​​(BE ) 代表樹的一個元素。您遇到一個特殊的要求,將好友範本宣告為 BT 而不是 BT。透過對此行為的調查,可以徹底了解類別模板和友元關係。

嵌套模板和影子

最初,您嘗試將友元模板宣告為 template 友元類英國電信;。但是,這是禁止的,因為巢狀模板的模板參數不能具有相同的名稱。嵌套模板必須使用不同的模板參數名稱。

定義好友關係

當您聲明 templatefriend class BT; 時,您就在 BT 和 BE 之間建立了好友關係,無論BT 的模板參數。這意味著 BT 的任何實例化都可以存取 BE 的任何實例化的私有成員。

如果您希望將好友關係限制為僅使用與BE 相同模板參數的BT 實例化,您應該聲明朋友如下:

template friend class bar;

在您的具體情況下,聲明friend class bar; BE 類別內應該足夠了。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3