在标头中声明的变量未在类范围中声明

时间:2012-10-25 14:05:34

标签: c++ oop class scope

此头文件似乎声明变量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;}

2 个答案:

答案 0 :(得分:3)

您似乎有两个具有相同名称的数据成员:

float** user_matrix;
int n;
float user_matrix;

这不起作用。

除此之外,您在类声明后缺少一个分号:

class matrix{
....
};

// ^这里!

答案 1 :(得分:1)

user_matrix被宣布两次。一次为float**,一次为floatfloat**可以设置为null,但float不能。编译器不接受您将float user_matris设置为null,因为它是float因此不可为空。重命名其中一个user_matrix,您应该会看到问题消失。