struct IHoge {
virtual ~IHoge()
{
} // <- このかっこがなんかウザい
virtual void DoSomething() = 0;
};

こういうときに純粋仮想デストラクタを書くと見た目が気持ち良くなります