Возможно ли создать метакласс всех предков? Если да, то как?
Например:
У меня есть класс 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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1