Not sure what subject line to use to summarize what I'm trying to do here, but that is kind of related :)

So I would like to use an interface that inherits from another interface, and ... well rather than describe what I'm trying to do, I think code speaks best.

type

// here is the first interface
i_adder = interface
  ['{01234567-2222-407C-8133-987654FEDCBA}']
  function add (a, b : longint) : longint;
  end;

// this next interface inherits from i_adder, and thus does two things
i_multiplier_and_adder = interface (i_adder)
  ['{A1234567-2222-407C-8133-987654FEDCBA}']
  function multiply (a, b : longint) : longint;
  end;

t_base = TInterfacedObject;

// now an implementing class for i_adder
t_adder = class (t_base, i_adder)
  function add (a, b : longint) : longint;
  end;

// and finally the implementing class for i_multiplier_and_adder
t_multiplier_and_adder = class (tbase, i_multiplier_and_adder)
  f_adder : i_adder;
  function multiply (a, b : longint) : longint;
// THIS PROPERTY DOES NOT WORK:
  property adder : i_adder read f_adder implements i_adder;
  end;


The structure I have is like... I have one instance of t_adder, and I want to have several instances of t_multiplier_and_adder that all use the one instance of t_adder as their hook.

And in my real code, t_adder has 6 methods or so, thus it becomes cumbersome to implement all those in t_multiplier_and_adder, each just calling the function on the t_adder that I'd like to use as a hook.

Do I have to implement all of the individual i_adder methods for t_multiplier_and_adder? Is there no shortcut?


Thanks!
~David.


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to