Changing the class data underneath some reference
A Guy With a Question
aguywithanquestion at gmail.com
Thu Nov 30 02:32:27 UTC 2017
On Thursday, 30 November 2017 at 00:40:51 UTC, 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.
You are dealing with a reference type. Reference types can be
though of as a value type of an address. The new operator can be
though of as giving the variable a new address. This means the
foo and bar variables are not bound to the same value because
their referencing different address. You need a struct. Which
isn't a reference.
More information about the Digitalmars-d-learn
mailing list