2016-05-28 6 views
-4

Ich habe eine Klasse in C++, die einen Konstruktor in Matrix.h hat:Fehlersegmentierung, wenn das Objekt c Erstellen ++

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

public: 
Matrix(int inputInt); 

und in der Matrix.cpp Datei:

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; 
} 

und in der main.cpp Ich schrieb

Matrix a(3); 

und ich habe einen Segmentierungsfehler. Warum das ?

Antwort

2

matrix ist ein Zeiger auf Zeiger, müssen Sie zuerst selbst 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

danke! das hat es gelöst – Michael

0

Ihr Programm enthält undefiniertes Verhalten. Sie reservieren keinen Speicher für matrix. Es zeigt nur auf Müll.