Can I make a variable public and readonly (outside where was declared) at same time?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Sep 26 11:18:44 PDT 2014


On 9/26/14 1:36 PM, "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm at gmx.net>" 
wrote:

> Alternatively, you could create a union with a private and a public
> member with the same types, but I wouldn't recommend it. Besides, the
> members would need to have different names:
>
>      class Foo {
>          union {
>              private int a;
>              public int b;
>          }
>      }

Hm.. that doesn't provide readonly access to either a or b.

But it gave me an idea:

class Foo {
    union {
       private int _a;
       public const int a;
    }
    void setA(int x) { _a = x; }
}

Hot damn! It works too :) Can't access _a from outside the module, can 
access a, but can't write it (even from within Foo). It's like an 
auto-inlined property function.

I don't know how it would affect the optimizer, or the GC scanner. 
Unions are ugly things...

-Steve


More information about the Digitalmars-d-learn mailing list