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.

I made an example demonstrating what I'd do in C++:

class SomeType
{
public:
    std::string text;
    SomeType(std::string input) {text = input;}
};


int main()
{
    SomeType foo = SomeType("Hello");

    SomeType* bar = &foo;

    foo = SomeType("World");

    std::cout << bar->text << "\n"; // Prints World
}

Reply via email to