On Fri, 12 Oct 2007 18:41:19 -0300 Joao Morais <[EMAIL PROTECTED]> wrote:
> Felipe Monteiro de Carvalho wrote: > > On 10/12/07, Marc Santhoff <[EMAIL PROTECTED]> wrote: > >> Does object pascal allow a class declaration marked as an abstract > >> class? Like in java for making sure the class can never be > >> instantiated itself, only it's descendants can be? > > > > The compiler will issue a warning if you instantiate a class with > > abstract methods > > Only if creating an instance straight from the class, eg: > > This will warn: > > begin > VMyObj := TMyAbstract.Create; > > This wont: > > var > VMyClass: TMyAbstractClass; > begin > VMyClass := TMyAbstract; > VMyObj := VMyClass.Create; Correct. The compiler can only warn about compile time errors, not runtime errors. For runtime you can use constructor TMyAbstract.Create; begin if ClassType=TMyAbstract then raise Exception.Create('abstract class'); inherited Create; end; Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal