簡體   English   中英

C ++靜態變量

[英]C++ static variable

我試圖設計僅頭文件庫,遺憾的是需要具有全局靜態變量(在類或命名空間中)。

有沒有任何方法或首選解決方案在保持標頭設計的同時擁有全局靜態變量?

代碼在這里

有幾種選擇。 我想到的第一件事是C ++允許在多個翻譯單元中定義類模板的靜態數據成員:

template<class T>
struct dummy {
   static int my_global;
};

template<class T>
int dummy<T>::my_global;

inline int& my_global() {return dummy<void>::my_global;}

鏈接器將多個定義合並為一個。 但是inline單獨也能夠提供幫助,這個解決方案更加簡單:

inline int& my_global() {
   static int g = 24;
   return g;
}

您可以將此內聯函數放入頭文件中,並將其包含在許多翻譯單元中。 C ++保證此內聯函數返回的引用始終引用同一對象。 確保該功能具有外部鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM