ページへ戻る
印刷
技術系備忘録/C++/小技/staticメンバ変数を持つクラスをヘッダファイルのみで実現
をテンプレートにして作成 ::
シンクリッジ
xpwiki
:技術系備忘録/C++/小技/staticメンバ変数を持つクラスをヘッダファイルのみで実現 をテンプレートにして作成
開始行:
static メンバ変数を持ったクラスは、static 変数の実体を記...
-ヘッダファイルと 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;
}}
ヘッダインクルードだけで使えるクラスは、何かと便利です。
コンパイルが遅くなるなどデメリットも考慮したうえで、上手...
終了行:
static メンバ変数を持ったクラスは、static 変数の実体を記...
-ヘッダファイルと 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;
}}
ヘッダインクルードだけで使えるクラスは、何かと便利です。
コンパイルが遅くなるなどデメリットも考慮したうえで、上手...
ページ名: