On Tuesday, 21 June 2016 at 19:15:56 UTC, Paul wrote:
Given these structures and declaration:

struct CoordList{
        int x, y;
}

struct Part{
        int x, y;
        CoordList[] coords;
        int nextNode, prevNode;
        string nextEnter, prevEnter;
}

Part[10] trackTemplates;


Can someone please tell me why I can't initialise Part[0].coords like this:

trackTemplates[0].coords = [ {0, 9}, {1, 1}, {3, 6} ];

but I can do this:

CoordList[] temp = [ {0, 9}, {1, 1}, {3, 6} ];
trackTemplates[0].coords = temp;

Many thanks!

My take is that “CoordList[] temp = [{0, 9}, {1, 1}, {3, 6}];” is initialization because you're setting the value when defining it but “trackTemplates[0].coords = [{0, 9}, {1, 1}, {3, 6}];” is an assignment so the compiler can infer as much and doesn't understand that each of those list of values are really CoordLists. For example “ trackTemplates[0].coords = [CoordList(0, 9), CoordList(1, 1), CoordList(3, 6)];” would have worked as expected.

Reply via email to