如何在另一个struct arrya中的struct中初始化一个int数组?

时间:2017-11-09 23:47:46

标签: c++ arrays struct

struct customFunction {
    int id;
    int numOfSubfunctions;
    int subfunctions[];
};

const customFunction supportedFunctions[] = {
    {
        0x01,
        1,
        {
            0x01
        }
    },
    {
        0x02,
        2,
        {
            0x01,
            0x02
        }
    }
    ...
};

supportedFunctions数组将用于检查将来是否支持特定功能,并用于识别要使用的功能等。

目前,我出现此错误:

  

'int [0]'

的初始化程序太多了

指向

{
    0x01
}

对于任何功能,可能有0 - n个子功能。

1 个答案:

答案 0 :(得分:0)

这永远不会奏效。同一数组中的多个customFunction元素不能为其subfunctions[]成员提供不同的大小。数组元素的大小必须相同。

如果customFunction元素需要具有不同大小的subfunctions[]数组,则必须将实际数组存储在内存中,然后指向它们,例如:

struct customFunction {
    int id;
    int numOfSubfunctions;
    const int *subfunctions;
};

const int subfunctions_1[] = {
    0x01
};

const int subfunctions_2[] = {
    0x01,
    0x02
};

const customFunction supportedFunctions[] = {
    {
        0x01,
        1,
        subfunctions_1
    },
    {
        0x02,
        2,
        subfunctions_2
    }
    ...
};