это менять нельзя. из библиотеки.
class c1
{
....
}
class c2: public c1
{
....
}
это можно.
class c3: public c2
{
....
}
Можно ли каким либо образом для объекта класса с3 запретить доступ ко всем методом унаследованным от класса с2, не запрещая доступа к методам унаследованным от класса с1?
Очевидное решение — опеределить все эти методы повторно в с3 как protected: с заглушками на вызов настоящих (внутрення реализация с3 основана на использовании методов с2). но очень уж много переписывать.
Здравствуйте, JakeS, Вы писали:
JS>это менять нельзя. из библиотеки.
JS>class c1
JS>{
JS> ....
JS>}
JS>class c2: public c1
JS>{
JS> ....
JS>}
JS>это можно.
JS>JS>class c3: public c2
JS>{
JS> ....
JS>}
JS>Можно ли каким либо образом для объекта класса с3 запретить доступ ко всем методом унаследованным от класса с2, не запрещая доступа к методам унаследованным от класса с1?
JS>Очевидное решение — опеределить все эти методы повторно в с3 как protected: с заглушками на вызов настоящих (внутрення реализация с3 основана на использовании методов с2). но очень уж много переписывать.
class c3: protected c2 // или private
{
public:
using c1::f1;
using c1::f2;
...
}