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

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

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 3432, today: 1, yesterday: 0