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