猿问

在C ++中的类初始值设定项中初始化const数组

我在C ++中有以下课程:


class a {

    const int b[2];

    // other stuff follows


    // and here's the constructor

    a(void);

}

问题是,鉴于b不能在构造函数的函数体内进行初始化,因此如何在初始化列表中初始化b const呢?


这不起作用:


a::a(void) : 

    b([2,3])

{

     // other initialization stuff

}

编辑:恰当的例子是当我可以b为不同的实例使用不同的值时,但已知这些值在实例的生存期内是恒定的。


慕森卡
浏览 603回答 3
3回答

九州编程

就像其他人说的那样,ISO C ++不支持该功能。但是您可以解决它。只需使用std :: vector即可。int* a = new int[N];// fill aclass C {&nbsp; const std::vector<int> v;public:&nbsp; C():v(a, a+N) {}};

函数式编程

使用C ++ 11,此问题的答案现已更改,您实际上可以执行以下操作:struct a {&nbsp; &nbsp; const int b[2];&nbsp; &nbsp; // other bits follow&nbsp; &nbsp; // and here's the constructor&nbsp; &nbsp; a();};a::a() :&nbsp; &nbsp; b{2,3}{&nbsp; &nbsp; &nbsp;// other constructor work}int main() {&nbsp;a a;}
随时随地看视频慕课网APP
我要回答