Размер, который вы инициализируете, не имеет ничего общего с типом. Поэтому:
// 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::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));
}
Ничего себе. Вы отправили то же самое, что и я за 2 секунды до меня. Я впечатлен. Вот хорошая ссылка, чтобы объяснить это, и я удалю свой ответ: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5 –