-6

这个头文件似乎声明了变量 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;}
4

2 回答 2

3

You appear to have two data members with the same name:

float** user_matrix;
int n;
float user_matrix;

This cannot work.

Besides that, you are missing a semi-colon after the class declaration:

class matrix{
....
};

// ^ here!

于 2012-10-25T14:09:00.807 回答
1

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

于 2012-10-25T14:18:55.653 回答