Возможно ли создать метакласс всех предков? Если да, то как?
Например:
У меня есть класс Tool, а его потомки Fig и Zoo, а у Fig и Zoo тоже есть потомки. Как создать метакласс для Tool, чтобы можно было достучатся до потомков Fig и Zoo?
Модератор: Модераторы
type
CTool = class of TTool;
var
t: TTool;
c: CTool;
...
c:= TZoo;
...
t:= TTool(c.Create()); //уже забыл, зачем приведение типа нужно, но оно нужно.
if t is TZoo then with TZoo(t) do begin
ZooDo();
end;
(t as TZoo).ZooDo();
TTool = class if(..)
TFig=Class of (TTool);
TZoo=Class of (TFig);
var
tool_obj:TTool;
fig_obj:TFig;
zoo_obj:TZoo;
dymmu_obj:TObject;
PTool:^TTool;
pointer_obj:TPointer;
tool_obj:=TTool(zoo_obj);
или
tool_obj:=zoo_obj as TTool;
также можно указать в обратном
zoo_obj:=TZoo(tool_obj);
dymmu_obj:=TObject(zoo_obj)
tool_obj:=TTool(dymmu_obj);
pointer_obj:=@zoo_obj;
tool_obj:=PTool(pointer_obj)^;
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64