static メンバ変数を持ったクラスは、static 変数の実体を記述する為、cpp ファイル(ソースファイル)が必要になってしまいがちです。
class CTest { static const char* m_text; public: const char* GetText()const { return m_text; } };
#include "test.h" const char* CTest:m_text = "abc";
おそらく、普通に書くとこんな感じ↑になると思います。
がしかし、クラスライブラリとして、ヘッダファイルだけで完結させたいケースもあると思います。
そういう場合は、テンプレートクラスにしてしまうと解決します。
template <int T> class CTestT { static const char* m_text; public: const char* GetText()const { return m_text; } }; template <int T> const char* CTestT<T>::m_text = "abc"; typedef CTestT<0> CTest;
ヘッダインクルードだけで使えるクラスは、何かと便利です。
コンパイルが遅くなるなどデメリットも考慮したうえで、上手に使うと吉かなと思います。