object oriented value type

Robert Fraser fraserofthenight at gmail.com
Fri Jul 13 12:11:40 PDT 2007


That is a _really_ good idea, and doesn't sound that hard to implement. votes++

Reiner Pope Wrote:

> Ender KaShae wrote:
> > From the replies to this thread I can see that my object oriented struct would be very difficult if not impossible to implement so I am suggesting the following instead:
> > 
> > 1. either:
> >     a) a copy construtor [ this(classtype value) ] that is called durring assignment
> >    or b) opAssign can be used for the same class
> > 2. ability to inherit from primative types 
> I'm not sure what's wrong with genuine struct inheritance -- but not for 
> polymorphism, just for code reuse. This would just be syntactic sugar 
> for template mixins. Instead of:
> 
> template impl
> {
>      int x;
>      bool xEven() { return (x % 2) == 0; }
> }
> 
> struct Foo
> {
>      mixin impl;
> }
> 
> struct Bar
> {
>      mixin impl;
>      int y;
> }
> 
> (which currently works in D)
> 
> why not allow
> 
> struct Foo
> {
>      int x;
>      bool xEven() { return (x % 2) == 0; }
> }
> 
> struct Bar : Foo
> {
>      int y;
> }
> 
> Actually, this could be implemented better than a wrapper for mixins, 
> because you don't need the source-code available. The compiler could 
> effectively convert the above snippet into
> 
> struct Bar
> {
>      private Foo __f;
>      alias __f.x x;
>      alias __f.xEven xEven;
> 
>      int y;
> }
> 
> (Although those aliases don't currently work in D, I think they capture 
> the idea.)
> 
> 
> And primitive types work naturally as structs, so inheriting from them 
> is fine as well.
> 
> 
>   -- Reiner




More information about the Digitalmars-d mailing list