我有一個關於在C++中使用多維std :: intializer_list的問題。我有一個Matrix類的,我希望能夠將其初始化像這樣:使用多維std :: initializer_list
Matrix<int, 3, 3> m({{1, 2, 3}, {4, 5, 6}, {7, 8, 9}});
,我現在需要的二維初始化列表的說法,但是編譯器不喜歡怎麼樣的構造我正在使用它。下面的代碼:
template<typename T, unsigned int rows, unsigned int cols>
Matrix<T, rows, cols>::Matrix(std::initializer_list<std::initializer_list<T> > set)
{
std::vector<std::initializer_list<T> > setVec = set;
std::vector<std::vector<T> > v;
for (std::vector<std::initializer_list<T> >::iterator i = setVec.begin(); i != setVec.end(); i++)
{
v.push_back(std::vector<T>(*i));
}
this->matrixData = new T*[rows];
for (unsigned int i = 0; i < rows; i++)
{
this->matrixData[i] = new T[cols];
for (unsigned int j = 0; j < cols; j++)
{
this->matrixData[i][j] = v[i][j];
}
}
}
而這裏的錯誤:
..\/utils/Matrix.h:138:7: error: need 'typename' before 'std::vector<std::initializer_list<_CharT> >::iterator' because 'std::vector<std::initializer_list<_CharT> >' is a dependent scope
如何擺脫錯誤的?有沒有一種方法來重構它,所以我不必做一個初始化列表的醜陋矢量或什麼?
您是否嘗試實際閱讀錯誤消息_? – ildjarn 2012-03-25 18:23:11
是的,我沒有完全得到它的要求。 – Avi 2012-03-26 01:25:29