2012-10-25 116 views
-5

此頭文件似乎聲明瞭變量user_matrix,但是當我在默認構造函數中使用它時,它看起來沒有聲明。在聲明中聲明的變量未在類範圍中聲明

這是頭文件:

#include<iostream> 
#include<cmath> 

class matrix{ 
public: 

    float** user_matrix; 
    int n; 

    matrix(int n1,int initiate); 

}; 

這是我嘗試和使用它的代碼

#include"matrix.h" 

using namespace std; 

matrix::matrix(int n1,int initiate){ 
    n=n1; 
    user_matrix=NULL; 
} 


int main(){ 
    return 0;} 

您能否提供我要去的地方錯或點我在正確的方向呢?非常感謝您提供的任何幫助。

edit2:原來,這是導致問題matrix.h.gch的目錄中的這個文件。

編輯:根據要求,這是所有的代碼。

#include<iostream> 
#include<cmath> 

//using namespace std; 

class matrix{ 

    //float** random_mat(int size); 

public: 

    float** user_matrix; 
    int n; 


    matrix(int n1,int initiate); 
    /*~matrix(){int i;if(user_matix!=NULL){for(i=0;i<n;i++){delete[] user_matrix[i];};delete[] user_matrix;};} 

    matrix multiply(matrix matrix1,matix matrix2); 
    matrix add(matrix matrix1,matrix matrix2); 
    matrix inverse(); 

    float** sub_matrix(float** matrix1,int i,int j,int n); 
    float det(); 

    void display(); 
    void display(matrix matrix1);*/ 


    }; 

#include"matrix.h" 

using namespace std; 
matrix::matrix(int n1,int initiate){ 
    n=n1; 
    user_matrix=NULL; 

    /*switch(initiate){ 

    case 1 : 
    int i; 
    user_matrix=new float* [n1]; 
    for(i=0;i<n1;i++){ 
     user_matrix[i] =new float [n1];} 

    break; 
    case 2 : 
    user_matrix=random_mat(n); 
    break; 
    case 3 : 
    user_matrix=NULL; 

    }*/ 
} 


int main(){ 

    //matrix m1(1,1); 
    return 0;} 
+1

你有兩個名爲'user-matrix'的變量:'float'和'float **'。 – chrisaycock

+0

這是來自其他測試的延期,這不會導致錯誤。當我沒有它編譯時,我仍然得到相同的錯誤。 – user1750289

+1

你仍然**缺少分號**來終止'class matrix {...}'。那也是你的原始代碼嗎? – chrisaycock

回答

3

你似乎有兩個名稱相同的數據成員:

float** user_matrix; 
int n; 
float user_matrix; 

這可不行。

除此之外,您在類聲明後失蹤分號:

class matrix{ 
.... 
}; 

// ^點擊這裏!

+0

這是來自其他測試的擱置,這不會導致錯誤。 – user1750289

1

user_matrix被宣告兩次。一次爲float**,一次爲floatfloat**可以設置爲空,但float不能。編譯器不接受您將float user_matris設置爲空,因爲它是float,因此不能爲空。重命名其中一個user_matrix,你應該看到你的問題消失。