Размер, который вы инициализируете, не имеет ничего общего с типом. Поэтому:
// this makes things easier!
typedef boost::numeric::ublas::matrix<double> matrix_type;
// this is the type (no initialization)
matrix_type arrayM[arraySize];
Проблема заключается в инициализации массива. Вы не можете сделать это:
TheClass::TheClass() :
arrayM(1, 3) // nope
{}
Вместо этого вы должны разрешить им конструкцию по умолчанию, а затем изменить их размер:
TheClass::TheClass()
{
std::fill(arrayM, arrayM + arraySize, matrix_type(1, 3));
}
Поскольку вы используете boost, рассмотрите возможность использования boost::array
, поскольку он дает более приятный синтаксис:
typedef boost::numeric::ublas::matrix<double> matrix_type;
typedef boost::array<matrix_type, arraySize> matrix_array;
matrix_array arrayM; // ah
TheClass::TheClass()
{
arrayM.assign(matrix_type(1, 3));
}