implicit casting from primitive type

Ali Çehreli acehreli at yahoo.com
Mon Aug 29 11:23:06 PDT 2011


On Mon, 29 Aug 2011 21:33:13 +0200, Mariusz Gliwiński wrote:

> Hello,
> this will be easy question. I defined attributes, that are taking my
> custom structures as attributes. Then, I'd like to add implicit
> conversion to this structures from primitive types, such as: <code>
> some.attribute = [1, 2, 3];   // i'd like to do that some.attribute =
> MyStruct(1, 2, 3); // now it's like that </code>
> opCast can be used only to casting FROM my type, but not TO... Was that
> in a book?
> 
> Thanks,
> Mariusz Gliwiński

To solve it for this specific case, you can overload attribute() to take 
int[]:

import std.exception;

struct MyStruct
{
    int i;
    int j;
    int k;
}

struct CustomStruct
{
    MyStruct ms;

    @property void attribute(int[] args)
    {
        enforce(args.length == 3);
        ms = MyStruct(args[0], args[1], args[2]);
    }
}

void main()
{
    auto some = CustomStruct();
    some.attribute = [ 1, 2, 3 ];
}

Ali


More information about the Digitalmars-d-learn mailing list