On Wednesday, 22 August 2018 at 07:03:02 UTC, Andrey wrote:
On Tuesday, 21 August 2018 at 22:52:31 UTC, Alex wrote:
Maybe, like this:

Thank you but here you use heap to create ab object. I want only on stack.
I know that one can do this:
test_handler.ptr = null;
and in place of call this:
handler.ptr = cast(void*)&this;
but it is ugly...

Hmm, any other ideas?

Ok... Another try:

´´´
import std.stdio;

struct Test
{
    void opAssign(Test)
    {
        "performing assignment".writeln;
        this.handler = &(this.one);
    }

    void one() const
    {
writeln("In handler: Address = ", &this, "; Text = ", text);
    }

    void execute()
    {
        text = "Inited!";
        writeln("Before: Address = ", &this, "; Text = ", text);
        handler();
    }

    void delegate() handler = void;
    string text = "NoValue";
}

struct Qwerty
{
    void prepare()
    {
        _test = Test();
    }

    void execute()
    {
        _test.execute();
    }

private:
    Test _test  = void;
}

void main()
{
    Qwerty qwerty;
    qwerty.prepare();
    qwerty.execute();
}
´´´

Reply via email to