Changing the class data underneath some reference

Steven Schveighoffer schveiguy at yahoo.com
Thu Nov 30 02:12:58 UTC 2017


On 11/29/17 7:40 PM, David Colson wrote:
> Hello all!
> 
> I'm getting settled into D and I came into a problem. A code sample 
> shows it best:
> 
> class SomeType
> {
>      string text;
>      this(string input) {text = input;}
> }
> 
> 
> void main()
> {
>      SomeType foo = new SomeType("Hello");
> 
>      SomeType bar = foo;
> 
>      foo = new SomeType("World");
> 
>      writeln(bar.text); // Prints hello
>      // I'd like it to print World
> }
> 
> In the C++ world I could do this using pointers and changing the data 
> underneath a given pointer, but I can't use pointers in D, so I'm not 
> sure how I can get this behaviour?
> 
> I'd be open to other ways of achieving the same affect in D, using more 
> D like methods.

D does not support reassigning class data using assignment operator, 
only the class reference. You can change the fields individually if you 
need to.

e.g.:

foo.text = "World";

structs are value types in D and will behave similar to C++ classes/structs.

-Steve


More information about the Digitalmars-d-learn mailing list