首頁 > 後端開發 > C++ > 如何在 C 類別範本中保留靜態類別成員(包括非整數類型)?

如何在 C 類別範本中保留靜態類別成員(包括非整數類型)?

Susan Sarandon
發布: 2024-12-10 08:46:13
原創
809 人瀏覽過

How Can I Preserve Static Class Members (Including Non-Integral Types) in C   Class Templates?

在類別範本中保留靜態類別成員

在C 領域,您可能會遇到希望為範本類別定義靜態資料成員的場景,但非整數資料類型構成了挑戰。本文深入探討了一種解決方案,該解決方案可讓您聲明靜態成員(無論其類型為何),同時確保它們存在於編譯的程式碼中。

考慮以下程式碼片段:

template <typename T>
struct S {
    ...
    static double something_relevant = 1.5;
};
登入後複製

如您所見我們注意到,編譯器會拋出錯誤,因為 Something_relevant 不是整數資料類型。這個問題源於模板在使用時被實例化的事實,並且由於 S 是一個模板,因此您無法在編譯文件中定義其成員。

要克服這個障礙,您可以訴諸於定義靜態成員頭檔本身,如下所示:

template <typename T>
struct S {
    static double something_relevant;
};

template <typename T>
double S<T>::something_relevant = 1.5;
登入後複製

透過在頭檔中定義靜態成員,可以確保其類外定義並避免任何編譯錯誤。此外,由於它包含在模板內,編譯器將處理任何潛在的多重定義,確保乾淨的實例化。這種技術可讓您在類別範本中維護靜態成員,無論其資料類型為何,並保證它們將出現在最終編譯的程式碼中。

以上是如何在 C 類別範本中保留靜態類別成員(包括非整數類型)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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