You don't have to write new functions in the derived class. You can use
public: using Foo::some_func;
to make the inherited protected functions public. Or alternatively consider the good ol' -fno-access-control
(or #define protected public
if your compiler doesn't have that flag).