C++ 读取访问权限冲突:
报错0x1110112
#include <iostream>
#include <string>
using namespace std;
class Mat {
public:
int* data;
int m, n; //行列指标
Mat() { data = NULL; m = 0; n = 0; }
Mat(int number1); //方阵构造
Mat(int number2, int numner3); //一般矩阵构造
Mat operator+(const Mat& Mat2); //加法重载
Mat operator-(const Mat& Mat4); //减法重载
Mat operator<<(const Mat& Mat5); //打印输出
Mat::Mat(int number1) { //方阵构造
m = number1;
n = number1;
int number4;
int i = 1;
int j = 1;
int* data = new int[m * n];
for (; (i <= m && j <= n);) {
number4 = (j - 1) * m + i - 1;
cin >> data[number4];
if (i == m) { i = 1; j++; }
else { i++; }
}
}
Mat::Mat(int number2, int numner3) { //一般矩阵构造
m = number2;
n = numner3;
int number5;
int* data = new int[m * n];
int i = 1;
int j = 1;
for (; (i <= m && j <= n);) {
number5 = (j - 1) * m + i - 1;
cin >> data[number5];
if (i == m) { i = 1; j++; }
else { i++; }
}
}
Mat Mat:: operator+(const Mat& Mat2) { //加法重载
Mat Mat1;
if (this->m == Mat2.m && this->n == Mat2.n) {
for (int i = 0; i <= (Mat1.m * Mat1.n - 1); i++) {
Mat1.data[i] = this->data[i] + Mat2.data[i];
}
}
else cout << "两个矩阵行、列数不完全相同,不能相加" << endl;
return Mat1;
}
Mat Mat:: operator-(const Mat& Mat4) { //减法重载
Mat Mat3;
if (this->m == Mat4.m && this->n == Mat4.n){
for (int i = 0; i <= (Mat3.m * Mat3.n - 1); i++) {
Mat3.data[i] = this->data[i] - Mat4.data[i];
}
}
else { cout << "两个矩阵行、列数不完全相同,不能相减" << endl; }
return Mat3;
}
int& Mat::at(int m1, int n1) { //at函数
int number6 = 0;
int& number8 = number6;
if (m1 < m && n1 < n && m1 >= 0 && n1 >= 0) {
number6 = m1 * m + n1;
return data[number6];
}
else { cout << "元素行列指标超出矩阵范围" << endl;
return number8;
}
}
void Mat::resize(int m2, int n2) { //resize函数
delete [] data;
m = m2;
n = n2;
int* data = new int[m * n];
}
ostream & operator<<(ostream & os , const Mat& Mat5){ //打印输出
int number7;
for (int i = 0; i <= Mat5.m-1 ; i++) {
for (int j = 0;j <= Mat5.n-1; j++) {
number7 = j * Mat5.m + i ;
os << Mat5.data[number7] << " "; //报错出现在这里,检查数组似乎没有越界,难道是os用的不对吗?
}
}
return os;
}
int main() {
int a = 3;
int b = 2;
int c = 5;
int d = 6;
Mat m1(a); //方阵构造
cout << m1 << endl; //报错是运行到这里发生的,后面的没有运行,编译通过了
。。。。。。