c++initializationc++03array-initialize

initialize a const array in a class initializer in C++


I have the following class in C++:

class a {
    const int b[2];
    // other stuff follows

    // and here's the constructor
    a(void);
}

The question is, how do I initialize b in the initialization list, given that I can't initialize it inside the body of the function of the constructor, because b is const?

This doesn't work:

a::a(void) : 
    b([2,3])
{
     // other initialization stuff
}

Edit: The case in point is when I can have different values for b for different instances, but the values are known to be constant for the lifetime of the instance.


Solution

  • Like the others said, ISO C++ doesn't support that. But you can workaround it. Just use std::vector instead.

    int* a = new int[N];
    // fill a
    
    class C {
      const std::vector<int> v;
    public:
      C():v(a, a+N) {}
    };