繁体   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