Voldemar |
Отправлено: 27.08.2003, 14:27 |
|
Не зарегистрирован
|
Создаю компоненту, у родительского класса есть свойство (Width), которое published, как сделать его не доступным(не видимым в Object Inspector)? |
|
Гость_Matt |
Отправлено: 29.08.2003, 22:04 |
|
Не зарегистрирован
|
Привет....
Попробуй применить такую концепцию:
class parent \\твой родительский класс
{
int width;\\свойство, которое ты хочешь спрятать
void prop1; \\другие свойства
void prop2;
void prop3;
parent(){};\\конструктор
void method1(){}; \\некоторые методы
void method2(){};
void method3(){};
~parent(){};\\деструктор
}
теперь создадим класс-оболочку: \\конечно, это не производный класс, но, может сгодится ?
class foo
{
private:
parent* var; \\имеем УКАЗАТЕЛЬ! Basic must die! А еще теперь доступ к var имеет только класс — оболчка
public:
foo(){var=new parent;} \\конструктор создает объект
void method1(){return (var->method1());}
....\\то же для method2() и method3()
\\а теперь можно написать методы для доступа к свойствам
\\свойствам var, а можно воспользоваться для этой цели перегрузкой оператора "->", тогда оболочку можно замаскировать
\\под РЕАЛЬНЫЙ производный класс (Pascal must die)
\\а можно их нагло, наплевав на расход памяти, продублировать в "производном классе" — оболочке.
}
Конечно, самый изящный способ — перегрузка оператора "->", но про это так много написано, что я не буду заниматься наглым плагиатом
Эта идея позволяет скрывать методы и свойства классов от юзверя (пользователя твоей библиотеки классов) а вот от Object Inspector — не знаю... не пробовал.....
В общем, если это поможет — буду рад.
|
|
LeeMouse |
Отправлено: 30.08.2003, 10:21 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 79
|
А приватное наследование не пробовали??? |
|
|