Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
February 16, 2017 Declaring constant references in struct members | ||||
---|---|---|---|---|
| ||||
Hi, Say I have a struct S that holds a reference to an object O. Is there a way to express that I want to be able to change the reference, but not what the reference points to? Thanks. struct S { O object; } class O { size_t things. } |
February 15, 2017 Re: Declaring constant references in struct members | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Zhang | On Thu, Feb 16, 2017 at 12:43:30AM +0000, David Zhang via Digitalmars-d-learn wrote: > Hi, > > Say I have a struct S that holds a reference to an object O. Is there a way to express that I want to be able to change the reference, but not what the reference points to? Thanks. > > struct S { > O object; > } > > class O { > size_t things. > } Maybe have a look at std.typecons.Rebindable? T -- What do you call optometrist jokes? Vitreous humor. |
February 16, 2017 Re: Declaring constant references in struct members | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Zhang | On Thursday, 16 February 2017 at 00:43:30 UTC, David Zhang wrote: > struct S { > O object; > } import std.typecons; Rebindable!O object; http://dpldocs.info/experimental-docs/std.typecons.Rebindable.html |
February 16, 2017 Re: Declaring constant references in struct members | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Thursday, 16 February 2017 at 00:49:45 UTC, Adam D. Ruppe wrote:
> On Thursday, 16 February 2017 at 00:43:30 UTC, David Zhang wrote:
>> struct S {
>> O object;
>> }
>
> import std.typecons;
>
> Rebindable!O object;
>
> http://dpldocs.info/experimental-docs/std.typecons.Rebindable.html
Is there a similar mechanism for one struct holding another? Otherwise, you get a cannot modify X with immutable members error.
eg:
struct A {
B b;
}
struct B {
const size_t something;
}
A a = A(B(16));
//attempt to replace a.b with new B
a.b = B(32); //error: cannot modify struct a.b B with immutable members
|
February 16, 2017 Re: Declaring constant references in struct members | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Zhang | On Thursday, 16 February 2017 at 01:05:58 UTC, David Zhang wrote:
> Is there a similar mechanism for one struct holding another?
You'd have to make the member a pointer to the struct.
immutable(B)* b;
|
Copyright © 1999-2021 by the D Language Foundation