Forward a single field to a subfield, "alias this"-style?
Timon Gehr
timon.gehr at gmx.ch
Tue Sep 6 15:02:49 PDT 2011
On 09/06/2011 11:03 PM, Vladimir Panteleev wrote:
> What I'm trying to do:
>
> struct S1 { int f; }
> struct S2
> {
> S1 s1;
> alias s1.f g;
> }
>
> This doesn't work. The declaration compiles, but attempts to access g
> result in:
>
> Error: struct test.S2 'f' is not a member
> Error: struct test.S2 member f is not accessible
> Error: this for f needs to be type S1 not type S2
Yes, that is because alias does not work with expressions, only with
symbols.
>
> I could generate @properties with mixins, but that breaks DDoc. Is there
> a neater solution?
>
You mean like this?
struct S1 { int f; }
struct S2 {
S1 s1;
@property int g(){return s1.f;}
@property void g(int x){s1.f=x;}
}
You may be able to remove the effect on Ddoc by using a version(StdDdoc)
condition or similar.
More information about the Digitalmars-d-learn
mailing list