Главная страница
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.024 c
6-1127234353
Galiaf
2005-09-20 20:39
2006.01.01
Проверка наличия сервера на определённом порте.


2-1134671584
skysat
2005-12-15 21:33
2006.01.01
Удаление файла


2-1134487967
root
2005-12-13 18:32
2006.01.01
Как исполнить bat(cmd) файл


6-1127191086
Islander
2005-09-20 08:38
2006.01.01
Delphi и веб-сервис: как передать русские строки?


2-1134737220
vale88
2005-12-16 15:47
2006.01.01
Unexpected end of command