c++暦が長いruby初心者からすると
B::hoge2がA::hoge2を呼び出して、その他にB専用の追加処理をするのは、ごく自然な行為に見える。

と思ったら、B::hoge1がA::hoge2を呼ぶのかよ…