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

Variable declared in header not declared in class scope

本文关键字:标题 声明 变量 未声明 范围      更新时间:2023-10-16

此标头文件似乎声明了变量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:事实证明,这是该文件在目录中引起问题矩阵

编辑:按照要求,这是所有代码。

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

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

float** user_matrix;
int n;
float user_matrix;

这是行不通的。

除此之外,您还缺少一类声明之后的半彩色:

class matrix{
....
};

//^这里!

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