staticなメンバ変数の初期化

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];

を追記して、暗黙の初期化を行うようにすればリンクエラーは解消されます。