2012-10-25 3 views
-5

Ce fichier d'en-tête semble déclarer la variable user_matrix mais lorsque je l'utilise dans le constructeur par défaut, il ne semble pas être déclaré.Variable déclarée dans l'en-tête non déclarée dans la portée de la classe

C'est le fichier d'en-tête.

#include<iostream> 
#include<cmath> 

class matrix{ 
public: 

    float** user_matrix; 
    int n; 

    matrix(int n1,int initiate); 

}; 

Voici le code que j'essaie de l'utiliser dans

#include"matrix.h" 

using namespace std; 

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


int main(){ 
    return 0;} 

Pouvez-vous suggérer où je me trompe ou me diriger dans le droit direction pour cela? Merci beaucoup pour toute aide apportée. Edit2: Il s'avère que c'était ce fichier dans le répertoire à l'origine du problème matrix.h.gch.

edit: Comme demandé c'est tout le code.

#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

Vous avez deux variables nommées 'user-matrix': a' float' et 'float **'. – chrisaycock

+0

Il s'agissait d'un report d'un autre test, cela ne provoque pas l'erreur. Quand je compile sans cela, j'ai toujours la même erreur. – user1750289

+1

Il vous manque toujours ** le point-virgule ** pour terminer la classe class {...} '. Est-ce que c'est aussi dans ton code original? – chrisaycock

Répondre

3

Vous semblez avoir deux membres de données avec le même nom:

float** user_matrix; 
int n; 
float user_matrix; 

Cela ne peut pas fonctionner.

En outre, il vous manque un point-virgule après la déclaration de classe:

class matrix{ 
.... 
}; 

//^ici!

+0

Il s'agissait d'un report d'un autre test, cela ne provoque pas l'erreur. – user1750289

1

user_matrix est déclaré deux fois. Une fois comme float** et une fois comme float. float** peut être défini sur null, mais un float ne peut pas. Le compilateur n'accepte pas que vous définissiez le float user_matris sur null car il s'agit d'un float et par conséquent non nullable. Renommez l'un de ces user_matrix, et vous devriez voir votre problème disparaître.

Questions connexes