![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уничтожение объекта
Nucer © (2008-08-24 13:33:00)Правильно ли в данном случае будут уничтожены объекты?
TGameObjectType=(gtRobot,gtSupply);
TGameObject = class(TObject)
...
gType:TGameObjectType;
...
constructor Create(gType:TGameObjectType);
end;
TRobot = class(TGameObject)
...
end;
TSupply = class(TGameObject)
...
end;
var
m:array of TGameObject;
begin
SetLength(m,2);
m[0]:=TRobot.Create;
m[1]:=TSupply.Create;
...
for i:=low(m) to high(m) do m[i].Free;
end;
Или обязательно делать вот так:
for i:=low(m) to high(m) do case m[i].gType of
gtRobot:(m[i] as TRobot).Free;
gtSupply:(m[i] as TSupply).Free;
end;
Помогите разобраться.
И еще вопрос, возможно ли определить подкласс объекта без введения дополнительной переменной gType?
Nucer (2008-08-24 13:43:00) [1]Спасибо за ответы.
>gType:TGameObjectType; в TGameObject скорее НЕ нужен чем нужен....
>Или тогда потомки не нужны, хотя тут мало инфы, чтоб судить об этом...
Просто я не знал про ClassName и ClassType, поэтому пришлось ввести TGameObjectType.
{RASkov} (2008-08-24 13:40:00) [2]> Или обязательно делать вот так:
> for i:=low(m) to high(m) do case m[i].gType of
> gtRobot:(m[i] as TRobot).Free;
> gtSupply:(m[i] as TSupply).Free;
> end;
Это вообще бред....)
gType:TGameObjectType;вTGameObjectскорее НЕ нужен чем нужен.... Или тогда потомки не нужны, хотя тут мало инфы, чтоб судить об этом...
{RASkov} (2008-08-24 13:37:00) [3]> for i:=low(m) to high(m) do m[i].Free;
Правильно.
> И еще вопрос, возможно ли определить подкласс объекта без
> введения дополнительной переменной gType?
См ClassName, ClassType у TObject....