static constの定数で、"定数式が必要"のエラー
先日定数クラスを作ったのですが、今日STLのbitsetのテンプレート引数に、定数を指定すると、"定数式が必要"のエラーが発生しました。
ソースはこんな感じです。
TConstant.h
#ifndef TConstantH #define TConstantH class TConstant { public: static const int Max; }; #endif
TConstant.cpp
#include "TConstant.h" const int TConstant::Max = 64;
TBitsetUser.h
#ifndef TBitsetUserH #define TBitsetUserH #include <bitset> #include "TConstant.h" class TBitsetUser { private: std::bitset<TConstant::Max> m_Bitset; };
いやいや、Maxはバリバリ定数のつもりです。とりあえず、ヘッダーファイルで宣言時に初期化することで、何故か事なきを得たわけですが。
TConstant.h
#ifndef TConstantH #define TConstantH class TConstant { public: // ヘッダーファイルで宣言時に初期化 static const int Max = 64; }; #endif
何故cpp側で初期化すると、定数式と認められないのでしょうか。うーん。。分かってないなー。