<div dir="ltr">Yeah, that would be helpful for when you need to use a more compositive approach and when you want an object to take on multiple roles (e.g. some sort of mediator or controller). Currently you need to create subclasses for every role but those classes are only use once with the mediator for a single instance per mediator and have wrap them, manage them (since class instances must always be pointers), etc and this is a lot of verbose boilerplate code to avoid a limitation of the language. Interfaces help a tiny bit but they are very limited since you cannot have something like base roles that implement most of the generic functionality but leave specializations to the subclasses.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 19, 2017 at 10:49 AM, Ondrej Pokorny <span dir="ltr"><<a href="mailto:lazarus@kluug.net" target="_blank">lazarus@kluug.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 19.08.2017 9:27, Sven Barth via fpc-devel wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The designers of Object Pascal decided on purpose against multiple inheritance as they probably saw the problems that C++ has with them. Even Java and C#, both clearly influenced by C++ don't support multiple inheritance.<br>
<br>
Just think about one class in the inheritance graph reintroducing a virtual method with different parameters. What will the final class do then?<br>
<br>
</blockquote></span>
Nothing special.  The new virtual method is just a completely different method. Nothing to really bother about. Pascal supports overloading with no problems.<br>
<br>
Actually what you get from the schema is a single inheritance chain. The extension classes would be automatically inserted:<br>
<br>
TBase = class(TObject);<br>
TBase_TAddressExtension = class(TBase);<br>
TBase_TAddressExtension_TTagsE<wbr>xtension = class(TBase_TAddressExtension)<wbr>;<br>
TCustomer = class(TBase_TAddressExtension_<wbr>TTagsExtension);<div class="HOEnZb"><div class="h5"><br>
<br>
Ondrej<br>
______________________________<wbr>_________________<br>
fpc-devel maillist  -  <a href="mailto:fpc-devel@lists.freepascal.org" target="_blank">fpc-devel@lists.freepascal.org</a><br>
<a href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel" rel="noreferrer" target="_blank">http://lists.freepascal.org/cg<wbr>i-bin/mailman/listinfo/fpc-dev<wbr>el</a><br>
</div></div></blockquote></div><br></div>