![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет всем! Возник вопрос касательно ООП.
Есть несколько классов: Код:
TInteger3Locations = class Location : array of Integer; Value: array of TVector3i; Name:array of ^string; procedure SetLengthFor(NewLength:Integer); end; TInteger4Locations = class Location : array of Integer; Value: array of TVector4i; Name:array of ^string; procedure SetLengthFor(NewLength:Integer); end; TFloat1fLocations = class Location : array of Integer; Value: array of Single; Name:array of ^string; procedure SetLengthFor(NewLength:Integer); end; Как вы можете видеть, тут у каждого класса дублируется поле Location. Я решил проблему тем, что создал предка для этих классов и вынес Location и Name туда. Это просто и проблема не в этом. Код:
TBaseLocations = class Location : array of glint; Name:array of ^string; end; Проблема в том, что помимо полей у этих классов дублируется ещё и процедура SetLengthFor. Вот её код: Код:
procedure TInteger3Locations.SetLengthFor(NewLength:Integer); var i:Integer; begin SetLength(Location,NewLength); SetLength(Value,NewLength); SetLength(Name,NewLength); for i:=0 to NewLength-1 do begin New(Value[i]); New(Name[i]); end; end; ![]() Делаем'c разные игры. Искать на glscene.ru |