spir <[email protected]> wrote:
I would like to learn about possible workarounds, or other alternative approaches to such problems, if ever you now any.
Basically, you probably want to use alias this: http://digitalmars.com/d/2.0/class.html#AliasThis It lets you subtype structs by propagating member field/function access to a member, if the struct or class does not implement the field or function itself. alias this is panacea - if a function expects a base struct, and returns it after doing some alterations, you cannot cast the result to a subtype (see below).
Also, I would love to read about the rationale for _not_ having struct type hierarchies (probably this would not be a big deal, since D has it for classes (*)) Or maybe I have simply not correctly understood available docs?
The main reason is the slicing problem. If the language lets a user store a struct that is a subtype of another struct, and that adds fields, in a location where space is only allocated for the base struct, the extra fields are eaten by grues, and bugs appear. -- Simen
