Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Приведение типов   Найти похожие ветки 

 
oSa   (2005-12-17 12:53) [0]

Добрый день. Помогите с приведением типа : у меня есть один класс Base и дочерние скажем Class1 Class2.
я заношу дочерние классы в  список обьектов TObjectList; Далее мне надо присвоить классу Base мои дочерние.  Подскажите как узнать тип обьектов хранящиеся в ObjectList и присвоить их классу Base ???


 
Anatoly Podgoretsky ©   (2005-12-17 12:55) [1]

Классу присвоить нельзя.
Теперь повторить тоже, но русским языком и с кодом.


 
Separator ©   (2005-12-17 12:57) [2]

попробуй через is


 
oSa   (2005-12-17 13:09) [3]

Русским не русским не знаю , но попробую. хех.
Показываю класс

TBase=class(TObject)
   ID  : integer;
   Name: string;
   Constructor Create; virtual;
   Destructor Destroy; override;
   Procedure Paint(canvas:TImage); virtual;
 end;

 TParfum=class(TBase)
   Zapah : string;
   Constructor Create; override;
   Destructor Destroy; override;
   Procedure Paint(canvas:TImage); override;
 end;

 TDeo=class(TParfum)
   sex: string; {man, woman}
   Objem: integer; {ml}
   Procedure Paint(canvas:TImage); override;
 end;

 TStick=class(TDeo)
   prozra4nost: string; {gel, belij}
   Procedure Paint(canvas:TImage); override;
 end;

 TSpray=class(TDeo)
   na_odegde: string; {ostaetsja, ne ostaetsja}
   Procedure Paint(canvas:TImage); override;
 end;

 TWashing = class(TParfum)
 end;

 TMilo = class (TWashing)
   what4: string; {õîçÿéñòâåííîå, äëÿ ðóê, äëÿ ëèöà, äëÿ òåëà}
   Procedure Paint(canvas:TImage); override;
 end;

 TShampun = class (TWashing)
   who4: integer; {0 - Ì, 1 - Æ, 2 - äåòñêîå}
   objem: integer; {ml}
   tip_volos: string; {æèðíûå, ñóõèå, íîðìàëüíûå}
   Procedure Paint(canvas:TImage); override;
 end;


далее мне надо реализовать полиморфизм, тоесть чтобы при вызове Base.Paint  мне рисовался нужный рисунок.
как я понимаю (может конечно не правльно), мне надо обьекту Бейз присвоить дочерний обьект
тоесть

Base := Shampun; // так работает !

но у нас список обьектов и я обратно же думаю что нам нужно узнавать тип обьекта в их списке и присваевать Родительскому.
Подскажите как это сделатб


 
Digitman ©   (2005-12-17 13:22) [4]

TBase=class(TObject)
..
  Procedure Paint(canvas:TImage); virtual; abstract;
..
end;

ObjectList.Add(TParfum.Create);
ObjectList.Add(TDeo.Create);
ObjectList.Add(TSpray.Create);
ObjectList.Add(TShampun.Create);

TBase(ObjectList[0]).Paint; //реально будет вызван метод TParfum.Paint
TBase(ObjectList[1]).Paint; //реально будет вызван метод TDeo.Paint
TBase(ObjectList[2]).Paint; //реально будет вызван метод TSpray.Paint
TBase(ObjectList[3]).Paint; //реально будет вызван метод TShampun.Paint


 
oSa   (2005-12-17 13:52) [5]

спасибо большое



Страницы: 1 вся ветка

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
2-1134643034
bav9
2005-12-15 13:37
2006.01.01
Виснет приложение при выводе окна Создание сообщения эл.почты


14-1133987105
Ильичев С.А.
2005-12-07 23:25
2006.01.01
Перевод


14-1133602424
Kerk
2005-12-03 12:33
2006.01.01
Soviet dream / Russians are stupid (most of them)


1-1133515793
VID
2005-12-02 12:29
2006.01.01
Проблема отрисовки ProgressBar в XP !


14-1134052240
begin...end
2005-12-08 17:30
2006.01.01
С Днём рождения! 8 декабря