2016-05-28 62 views
-4

當我有C++中的類,它在Matrix.h一個構造:分段故障創建對象C++

private: 
int col; 
int row; 
bool isValid; 
int **matrix; 

public: 
Matrix(int inputInt); 

並在Matrix.cpp文件:

Matrix::Matrix(int inputInt) 
{ 
row=inputInt; 
col=inputInt; 
for (int i=0;i<row;i++) 
    matrix[i]=new int [col]; 
for (int i=0;i<row;i++) 
    for (int j=0;j<col;j++) 
      matrix[i][j]=0; 
isValid=true; 
} 

,並在main.cpp我寫了

Matrix a(3); 

我得到了分段錯誤。這是爲什麼 ?

回答

2

matrix是一個指針指針,你首先需要newmatrix本身。

Matrix::Matrix(int inputInt) 
{ 
row=inputInt; 
col=inputInt; 
matrix = new int* [row]; 
for (int i=0;i<row;i++) 
    matrix[i]=new int [col]; 
for (int i=0;i<row;i++) 
    for (int j=0;j<col;j++) 
      matrix[i][j]=0; 
isValid=true; 
} 
+0

謝謝!那解決了它 – Michael

0

您的程序包含未定義的行爲。您從不爲matrix分配任何存儲空間。它只是指向垃圾。