在构造函数初始化列表中的类内部初始化类对象的静态数组

时间:2017-10-03 14:24:57

标签: c++ arrays list static initialization

我有一个固定大小为8的类对象的静态数组PV。我想在construtor初始化列表中初始化这个数组。但我得到错误:

  

/base/Port.hpp:35:错误:在' {'之前预期的不合格ID令牌

     

/base/Port.hpp:在构造函数' io_port_t :: io_port_t(uint16_t,uint16_t,uint16_t)':

     

/base/Port.hpp:25:错误:预期`('之前    ' {'令牌

     

/base/Port.hpp:25:错误:没有匹配的函数来调用   '管脚::引脚()'

我的代码:

struct io_port_t
{
public:

    io_port_t(uint16_t pin, uint16_t ddr, uint16_t port) :
        PIN ((CReg)pin  ),
        DDR ((CReg)ddr  ),
        PORT((CReg)port ),
        P0(0, &PIN, &DDR, &PORT),
        P1(1, &PIN, &DDR, &PORT),
        P2(2, &PIN, &DDR, &PORT),
        P3(3, &PIN, &DDR, &PORT),
        P4(4, &PIN, &DDR, &PORT),
        P5(5, &PIN, &DDR, &PORT),
        P6(6, &PIN, &DDR, &PORT),
        P7(7, &PIN, &DDR, &PORT),
        PV{
            Pin(0, &PIN, &DDR, &PORT),
            Pin(1, &PIN, &DDR, &PORT),
            Pin(2, &PIN, &DDR, &PORT),
            Pin(3, &PIN, &DDR, &PORT),
            Pin(4, &PIN, &DDR, &PORT),
            Pin(5, &PIN, &DDR, &PORT),
            Pin(6, &PIN, &DDR, &PORT),
            Pin(7, &PIN, &DDR, &PORT)
        }
    { }

    CReg PIN;
    CReg DDR;
    CReg PORT;

    Pin P0;
    Pin P1;
    Pin P2;
    Pin P3;
    Pin P4;
    Pin P5;
    Pin P6;
    Pin P7;

    Pin PV[8];
};

当我从构造函数初始化列表中删除PV的初始化时,它编译得很好。我试图将{括号更改为(,例如PV(PV({,但我仍然遇到错误。如何初始化PV数组?

0 个答案:

没有答案