C ++静态变量

我试图设计仅头文件库,不幸的是需要有全局静态变量(无论是在类中还是在命名空间中)。

有没有什么方法或首选解决方案具有全局静态变量,同时仅维护头部设计?

代码在这里


有几个选项。 我首先想到的是,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 ++保证这个内联函数返回的引用将始终引用同一个对象。 确保该功能具有外部链接。

链接地址: http://www.djcxy.com/p/35319.html

上一篇: C++ static variable

下一篇: static variables in an inlined function