2017-02-26 7 views
3

私は軽量パーサをC++ h-fileテンプレートライブラリとして開発しています。h-file C++テンプレートライブラリの静的変数。大丈夫ですか?

グラマは、何らかの方法で列挙するいくつかのクラスで、オーバーロードされた演算子を使用して特定のBNFのような表記法で記述されています。私はそれを実行するいくつかのカウンタとしてただ一つのグローバル変数が必要です。

h-ファイルにextern int var;、cpp-fileにint var;を使用したくないのは、私のすべてのものが1つのヘッダーファイルに入っていて、今ではユーザーがそれを含める必要があるからです。

ヘッダーファイルにstatic int var;を宣言できますが、この変数のコピーは、ヘッダーファイルが含まれているすべてのオブジェクトファイルに表示されます。

テンプレートライブラリでも問題ありませんか? 提案がありますか?

答えて

1

既に述べたように、シングルトンパターンを使用することができます。 このバージョンでは、テンプレートcppファイル内の静的メンバーの定義は必要ありません。

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

ありがとうございました!アイデアは機能します! –

関連する問題