Generic class and Derived creation
Heres a short low down on what's wrong. Made a generic class that will never
be used by itself.
TThinker=Class
Public
Procedure Replicate; //not to be overriden
Procudre DoAtRep (AThinker : TThinker); Virtual; Abstract;
//This allows derived class to manipulate the "child" or
"Replication" with out rewriting
Replicate every time
end;
TDot=Class(TThinker);
Procedure DoAtRep (AThinker : TThinker); Override;
end;
Procedure TThinker.Replicate;
Var
NewThinker :TThinker;
Begin
NewThinker :=TThinker.create;
// do some settings, etc.
DoAtRep(NewThinker); //pass it on for the derived work
end;
Procedure TDot. DoAtRep (AThinker : TThinker);
Begin
(AThinker as TDot).drawdots;
//OUCH! This is a big no go, even when the comes from ADot.Create;
ADot.Replicate . (Which calls Adot.DoAtRep)
//Why? Because AThinker was created by TDot.replicate. How do I get TThinker
to create replications of the derived class
//instead of itself. Remember, TThinker was to be a generic class never to
really be used by itself. Class Referencing perhaps, but that lead to
problems.
end;
--
- Tim