Hoge.h
1 2 3 4 5 6 7 8 | class Hoge { public : static func(); private : static std::vector< int > m_vector; static std::bitset<16> m_bitset; static int m_array[16]; }; |
Hoge.cpp
1 2 3 4 5 6 | Hoge::func() { m_vector.clear(); m_bitset.reset(); m_array[0] = 0; } |
という風にしてしまうと、LNK2001の外部参照が未解決リンクエラーが出てしまいます。
staticなメンバ変数は、ヘッダ上では宣言しているだけなので、実体の確保はソース(cpp)側で行う必要があります。
Hoge.cppのfunc()の前に
1 2 3 | std::vector< int > Hoge::m_vector; std::bitset<16> Hoge::m_bitset; int Hoge::m_array[16]; |
を追記して、暗黙の初期化を行うようにすればリンクエラーは解消されます。