代码之家  ›  专栏  ›  技术社区  ›  Anycorn

C++静态变量

  •  5
  • Anycorn  · 技术社区  · 15 年前

    我正在尝试设计只包含头的库,不幸的是,它需要全局静态变量(在类中或命名空间中)。

    代码是 here

    1 回复  |  直到 9 年前
        1
  •  10
  •   sellibitze    15 年前

    有几个选择。我首先想到的是,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;
    }