Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизПриведение типов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c