C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как спрятать родительское свойство у объекта?
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(){};\\деструктор

}

теперь создадим класс-оболочку: \\конечно, это не производный класс, но, может сгодится ? smile.gif

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) smile.gif
\\а можно их нагло, наплевав на расход памяти, продублировать в "производном классе" — оболочке. sad.gif

}

Конечно, самый изящный способ — перегрузка оператора "->", но про это так много написано, что я не буду заниматься наглым плагиатом smile.gif

Эта идея позволяет скрывать методы и свойства классов от юзверя (пользователя твоей библиотеки классов) а вот от Object Inspector — не знаю... не пробовал.....
В общем, если это поможет — буду рад. smile.gif
LeeMouse
Отправлено: 30.08.2003, 10:21


Дежурный стрелочник

Группа: Участник
Сообщений: 79



А приватное наследование не пробовали??? cool.gif

Вернуться в Вопросы программирования в C++Builder