在类范围中未声明的标题中声明的变量
Variable declared in header not declared in 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:事实证明,这是该文件在目录中引起问题矩阵
编辑:按照要求,这是所有代码。
#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**
,一次为float
。float**
可以设置为null,但float
不能设置为null。编译器不接受您将float user_matris
设置为null,因为它是float
,因此不可用。重命名其中一个user_matrix
,您应该看到您的问题消失了。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 为什么在标题上的结构中声明的模板不违反 ODR 并且专用化会违反 ODR
- 标题文件中大规模转发声明类别的风险是什么?
- 在标题文件中获取声明错误
- 如何在源文件中定义类并将其声明在标题文件中(而不必使用`class :: method'语法定义类方法)
- C - 可以在标题之外声明类功能
- 如果我在标题文件中使用关键字的声明,则应该在定义本身中包含相同的关键字
- 标题C 中的静态类方法声明
- 在类范围中未声明的标题中声明的变量
- 前向声明/最好何时包含标题