Why `foo.x.saa.aa` and `foo.y.saa.aa` is the same? `shared_AA.saa` should still be instance variable, not class variable, right?
Richard (Rikki) Andrew Cattermole
richard at cattermole.co.nz
Tue Jun 25 02:25:14 UTC 2024
On 25/06/2024 2:16 PM, mw wrote:
> struct shared_AA {
> shared_AA_class saa = new shared_AA_class(); // by this syntax `saa`
> is still instance variable?
> alias saa this;
> }
When you specify an initializer like this, that instance of
``shared_AA_class`` gets put into the .init of ``shared_AA``.
It is shared between instances, even if its a field.
```d
import std.stdio;
struct Foo {
ubyte value = 2;
}
void main() {
writeln(cast(ubyte[])__traits(initSymbol, Foo)); // [2]
}
```
More information about the Digitalmars-d-learn
mailing list