C++静态变量[复制]

kkbh8khc  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(90)

此问题已在此处有答案

How to initialize static members in the header [duplicate](7个回答)
How can you define a static data member of a class template?(3个答案)
8天前关闭
我试图设计头只库,不幸的是需要有全局静态变量(无论是在类或命名空间)。
是否有任何方法或首选的解决方案,有全局静态变量,同时保持头部只有设计?
代码为here

yhxst69z

yhxst69z1#

这里有几个选择。我想到的第一件事是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++保证这个内联函数返回的引用总是指向同一个对象。确保函数具有外部链接。

相关问题