如何将boost :: multi_array放在构造函数的初始化列表中?

时间:2015-07-16 22:27:40

标签: c++ boost

我有一个模板化课程,主要致力于持有boost:: multi_array。我试图在初始化类中初始化数组,但我收到一个错误:

template <typename T>
class Hist2D
{
private:
  typedef boost::multi_array<T, 2> array_type;
  array_type MatrixCount;

public:
  Hist2D(int width, int height): array_type MatrixCount(boost::extents[width][height]){}; 
};

这会出现以下错误:

ctest.cpp: In constructor ‘Hist2D<T>::Hist2D(int, int)’:
ctest.cpp:34:45: error: expected ‘(’ before ‘MatrixCount’
   Hist2D(int width, int height): array_type MatrixCount(boost:extents[width][height]){}; 
                                             ^
ctest.cpp:34:45: error: expected ‘{’ before ‘MatrixCount’

这些错误意味着什么?

1 个答案:

答案 0 :(得分:3)

这是语法错误。您无需在初始化列表中声明类型。

试试这个:

Hist2D(int width, int height): MatrixCount(boost::extents[width][height]){}

C ++编译错误可能令人困惑。一段时间后你会习惯他们:D