Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2007-10

How to force the child's constructor to call its parent constructor

5 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

amir

Is there any way to force the child constructor to call its parent(direct parent) constructor. Consider the following case:

  TParent= class (TObject)
  private
    ID: Integer;
  public
      constructor Create (MyIdentifier: Integer);
     ....
  end;
I want to force the all childs of TParent to call the Create constructor
(with appropriate parameter). But one can implement a child class like this:
  constructor TChild.Create;
  begin
//     do any thing but not use inherited.
  end;

Reply by email

Joao Morais
to amir
amir wrote 7 lines
I want to force the all childs of TParent to call the Create constructor (with appropriate parameter). But one can implement a child class like this: constructor TChild.Create; begin // do any thing but not use inherited. end;

No way. But you can override the NewInstance method; constructors will call it for sure. You can also override the AfterConstruction method.

Joao Morais

Reply by email

amir
to Joao Morais
Joao Morais wrote 14 lines
amir wrote: > I want to force the all childs of TParent to call the Create > constructor (with appropriate parameter). But one can implement a > child class like this: > constructor TChild.Create; > begin > // do any thing but not use inherited. > end; No way. But you can override the NewInstance method; constructors will call it for sure. You can also override the AfterConstruction method. -- Joao Morais

How can I use the NewInstance or AfterConstruction methods for my purpose? I want to force the others to set ID. The TParent is written by me but anyone can write the TChild class.

Reply by email

amir
to Michael Schnell

It is a run-time error but what I am looking for is an compile-time error. It is not sensible(for me) to raise an exception because of bad implementation. Thanks for you idea ;)

Amir

Michael Schnell wrote 7 lines
Couldn't you check the ID in your after construction event and throw an exception if it's not set ? -Michael _______________________________________________ fpc-devel maillist - http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply by email