普通にbを仮想関数にすりゃいいんでないの?