Can we just have struct inheritence already?
Jonathan M Davis
newsgroup.d at jmdavisprog.com
Sun Jun 9 13:59:25 UTC 2019
On Sunday, June 9, 2019 2:05:34 AM MDT Manu via Digitalmars-d wrote:
> I am really really tired of this pattern:
>
> struct DerivedStruct
> {
> static if (BaseStruct.tupleof.length > 0)
> BaseStruct base;
> else
> ref inout(BaseStruct) base() inout { return
> *cast(inout(BaseStruct)*)&this; }
> alias base this;
>
> // derived members
> //...
> }
>
> Imagine if we could just write:
>
> struct DerivedStruct : BaseStruct
> {
> // derived members
> //...
> }
>
> Just imagine!
I've never even seen code use such a pattern before, and honestly, it seems
really weird to me to even write code that acts like one struct is derived
from another, because without polymorphism, I wouldn't really have thought
that that would make any sense.
However, if you're using this pattern frequently, what's stopping you from
just creating a function or template to use with mixin that takes care of it
for you? I would have thought that it would be fairly straightforward to do
something like
struct DerivedStruct
{
mixin(aliasAsMember!BaseStruct);
}
and then it really isn't any more complex than
struct DerivedStruct : BaseStruct
{
}
would be.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list