Это невозможно. В объявлении using не может быть имени частного члена базового класса. Даже если есть другие перегруженные функции с тем же именем, которые не являются частными.
Единственный способ сделать из этого класса друга:
class Derived;
class Base
{
void f() { }
friend class Derived;
};
class Derived: public Base
{
public:
using Base::f;
};
Поскольку вы все равно делаете имена общедоступными в производном классе, чтобы к ним могли обращаться производные классы Derived
, вы можете сделать их protected
в базовом классе и опустить объявление friend
.