Изменение доступности унаследованных функций через объявление using
не может быть выполнено выборочно при заданной перегрузке по той простой причине, что объявление using
только вводит имя в декларативное регион и что по определению, перегрузки функций имеют одно и то же имя.
Единственная альтернатива, которую я вижу здесь, - использовать тривиальные функции пересылки:
class derived : private base
{
public:
void method() { base::method(); }
using base::method2; // method2 is now public
// method(int) stays inaccessible
};
Я не совсем уверен, что понимаю ваш второй вопрос, но да: вы можете изменить доступность базовых членов в производном классе с помощью объявлений using
.