メニュー
ブログ更新履歴
コンテンツ更新履歴
リンク
  • rlib-MML デモページ
  • MML (Music Macro Language) をコンパイルし、再生や標準MIDIファイル出力をブラウザ上で行える形にまとめています。
  • Magome
  • クラウドベースのMIDIシーケンサ
    音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています。
twitter
  
Cur: 2016-07-19 (Tue) 17:38:42 takatsuka source
Line 1: Line 1:
 +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;
 +}}
 +
 +
 +
 +
 +ヘッダインクルードだけで使えるクラスは、何かと便利です。
 +コンパイルが遅くなるなどデメリットも考慮したうえで、上手に使うと吉かなと思います。
  

  • Backup diff of 技術系備忘録/C++/小技/staticメンバ変数を持つクラスをヘッダファイルのみで実現(No. All)

Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 3271, today: 1, yesterday: 1