0
class Matrix {
double** contents;
uint r;
uint c;
public:
Matrix(const i_list & list); // constructor (using initializer list)
Matrix::Matrix(uint rows, uint cols){
r = rows;
c = cols;
contents = new double * [r];
for (int i = 0; i < r; ++i){
contents[i] = new double[c];
for (int j = 0; j < c; ++j){
contents[i][j] = 0.0;
}
}
};
Matrix::Matrix(const initializer_list<initializer_list<double> > & list){
r = list.size();
c = (*list.begin()).size();
for (int i = 0; i < r; ++r){
for (int j = 0; j < c; ++c){
contents[i][j] = *((list.begin() + i)->begin() + j); // EXC_BAD_ACCESS error
}
}
};
我要分配初始化列表到這樣一個動態分配的數組:表初始化器分配到2D陣列EXC_BAD_ACCESS錯誤
矩陣d = {{1,2},{3,4}}; 我得到一個EXC_BAD ACCESS錯誤,程序停止。有誰知道可能會導致這種情況?
是的,還有更好的方法 - 'typedef std :: vector> Matrix;矩陣d = {{1,2},{3,4}};' –
PaulMcKenzie
在代碼中使用初始化列表有什麼缺點? – Char
如果你想要做的是初始化(不分配,但初始化),沒有缺點。我的觀點是,你可以用C++的兩行代碼完成你所寫的所有代碼。 – PaulMcKenzie