Constant arrays are really a pain to work with in C++ classes. I have avoided them for this reason. You could carry a container instead, and assign something like so:
Code:
class foo
{
private:
const vector<int> arr;
public:
foo(const int *const a, size_t size): arr(a, a + size) {}
};
It basically must be constructed like this, as any and all constants are handled in the initializer list. I used a vector here, but you could use any container.
That's pretty much the only way without using the mutable keyword. The other way, calling an init function in the constructor body to set up the same array every time, depends on the array being mutable.