在C 領域,將模板化結構或類別聲明為友元可能會出現與語法相關的障礙。要實現此目的,請考慮以下方法:
templatestruct foo { template friend class foo; private: // ... };
此語法似乎編譯成功。但是,它將 foo 的所有模板實例宣告為彼此的友元,無論它們採用什麼模板參數。這可能符合或可能不符合您的預期用例。
如果您需要將友誼限制為僅特定實例,您可以使用以下語法來實現此目的:
templatestruct foo { template friend struct foo ; private: // ... };
不幸的是,此語法不允許包含 foo 的所有可能實例化的通用聲明。
因此,如果您的目標是在 foo 的所有模板實例化之間建立友誼,考慮到 C 語法的限制,使用友元類 foo 的第二種方法是最接近的。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3