【问题标题】:Static variable in h-file C++ template library. Is it OK? [duplicate]h 文件 C++ 模板库中的静态变量。可以吗? [复制]
【发布时间】:2017-02-26 11:24:15
【问题描述】:

我正在开发轻量级解析器作为 C++ h 文件模板库。

语法是用特定的类似 BNF 的符号来描述的,在某些应该以某种方式枚举的类上使用重载运算符。我只需要一个全局变量作为执行它的计数器。

我不想在 h 文件中使用 extern int var; 和在 cpp 文件中使用 int var;,因为我所有的东西都在单个头文件中,现在用户只需要包含它。

我可以在头文件中声明static int var;,但这个变量的副本出现在包含我的头文件的所有目标文件中。

模板库可以吗? 有什么建议吗?

【问题讨论】:

    标签: c++ static extern


    【解决方案1】:

    如前所述,您可以使用单例模式。 该版本不需要在模板cpp文件中定义静态成员。

    template <typename T> class Tmpl
    {
    public:
        static Tmpl<T>& GlobalInstance()
        {
            static Tmpl<T> m_Singleton;
            return m_Singleton;
        };
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2021-10-13
      相关资源
      最近更新 更多