首頁 > 後端開發 > C++ > 如何在 C 中將模板化結構/類別宣告為友元?

如何在 C 中將模板化結構/類別宣告為友元?

Linda Hamilton
發布: 2024-11-07 17:40:03
原創
944 人瀏覽過

How Can You Declare Templated Structs/Classes as Friends in C  ?

將模板化結構/類別宣告為友元

在C 領域,將模板化結構或類別聲明為友元可能會出現與語法相關的障礙。要實現此目的,請考慮以下方法:

template <typename T>
struct foo
{
    template <typename>
    friend class foo;

private:
    // ...
};
登入後複製

此語法似乎已成功編譯。但是,它將 foo 的所有模板實例宣告為彼此的友元,無論它們採用什麼模板參數。這可能符合也可能不符合您的預期用例。

如果您需要將友誼限制為僅特定實例化,您可以使用以下語法來實現此目的:

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

private:
    // ...
};
登入後複製

不幸的是,這語法不允許包含foo 所有可能的實例化的通用聲明。

因此,如果您的目標是在所有foo 的模板實例化之間建立友誼,那麼使用友元類foo 的第二種方法是最接近您的方法可以得到,給定C語法的限制。

以上是如何在 C 中將模板化結構/類別宣告為友元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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