此头文件似乎声明变量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;}
答案 0 :(得分:3)
您似乎有两个具有相同名称的数据成员:
float** user_matrix;
int n;
float user_matrix;
这不起作用。
除此之外,您在类声明后缺少一个分号:
class matrix{
....
};
// ^这里!
答案 1 :(得分:1)
user_matrix
被宣布两次。一次为float**
,一次为float
。 float**
可以设置为null,但float
不能。编译器不接受您将float user_matris
设置为null,因为它是float
因此不可为空。重命名其中一个user_matrix
,您应该会看到问题消失。