digitalmars.D.learn - how to initialise const variables
- Nicholas Wilson (14/14) Feb 25 2016 struct A
- cym13 (9/23) Feb 25 2016 As you did:
- Nicholas Wilson (4/30) Feb 25 2016 fails to compile
- cym13 (4/36) Feb 26 2016 What compiler and version are you using ? Because I literally
- Adam D. Ruppe (9/23) Feb 25 2016 Use a constructor for A instead of trying to write to one
struct A { const (void *) p; } struct B { A a; this(void * _p) { a.p = _p; } } I cannot change the definition of A how do I initialise b.a.p?
Feb 25 2016
On Friday, 26 February 2016 at 02:32:44 UTC, Nicholas Wilson wrote:struct A { const (void *) p; } struct B { A a; this(void * _p) { a.p = _p; } } I cannot change the definition of A how do I initialise b.a.p?As you did: void main() { int i = 42; B b = B(&i); int* p = cast(int*)b.a.p; assert(*p == 42); }
Feb 25 2016
On Friday, 26 February 2016 at 02:48:35 UTC, cym13 wrote:On Friday, 26 February 2016 at 02:32:44 UTC, Nicholas Wilson wrote:struct A { const (void *) p; } struct B { A a; this(void * _p) { a.p = _p; } } I cannot change the definition of A how do I initialise b.a.p?As you did: void main() { int i = 42; B b = B(&i); int* p = cast(int*)b.a.p; assert(*p == 42); }a.p = _p;fails to compile fixed by a = typeof(a)(_p);
Feb 25 2016
On Friday, 26 February 2016 at 03:18:02 UTC, Nicholas Wilson wrote:On Friday, 26 February 2016 at 02:48:35 UTC, cym13 wrote:What compiler and version are you using ? Because I literally just copied your example and added my main and got no error.On Friday, 26 February 2016 at 02:32:44 UTC, Nicholas Wilson wrote:struct A { const (void *) p; } struct B { A a; this(void * _p) { a.p = _p; } } I cannot change the definition of A how do I initialise b.a.p?As you did: void main() { int i = 42; B b = B(&i); int* p = cast(int*)b.a.p; assert(*p == 42); }a.p = _p;fails to compile fixed by a = typeof(a)(_p);
Feb 26 2016
On Friday, 26 February 2016 at 02:32:44 UTC, Nicholas Wilson wrote:struct A { const (void *) p; } struct B { A a; this(void * _p) { a.p = _p; } } I cannot change the definition of A how do I initialise b.a.p?Use a constructor for A instead of trying to write to one specific member: a = A(_p); const variable must be initialized in constructors. Structs have automatically defined constructors that take all the member variables so even if it isn't explicitly written, you can still do this.
Feb 25 2016