在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中文網其他相關文章!