その手の用途にはprivate継承とusingを使うのが定石。
publicで済ませるのは、暗黙の型変換が考えられない場合
(traitsとかね)だけ。