class CHoge
{
protected:
static std::set<CHoge*> s_hoges;

public:
CHoge();
~CHoge();
};

--------------
static std::set<CHoge*> CHoge::s_hoges;

CHoge::CHoge()
{
s_hoges.insert(this);
}

CHoge::~CHoge()
{
s_hoges.erase(this);
}

こういう風にして自分のインスタンスの一覧を管理してるプログラムがあるんですが、
CHogeのオブジェクトがグローバル変数だった場合、プログラム終了時に、CHogeの
インスタンスよりもs_hogesの方が先に消滅してしまうらしく、CHogeのデストラクタ
でアクセスエラーが発生します。どうすりゃええのですか