写稀疏矩阵加法出现的有关问题

写稀疏矩阵加法出现的问题
这个是我稀疏矩阵的作业,我在写加法的时候编译没问题,运行的时候出现这个东西,求大神解答写稀疏矩阵加法出现的有关问题
写稀疏矩阵加法出现的有关问题

#include <iostream>
#include <vector>
#include <string>
using namespace std;

template <class T>
class matrix;

template <class T>
class Term
{
friend matrix<T>;
public:
int row,col;
T value;
};

template <class T>
class matrix
{
template <class U>
friend ostream& operator<< (ostream& ,const matrix<U>&);
public:
matrix(int maxterms);
~matrix(){delete []a;}
void inputmatrix(const string&);
void retrieve();
void transpose(matrix<T>& )const;

matrix<T> operator+(const matrix<T>& m);

void RevMatrix(matrix<T>& m);
//matrix<T> operator-(const matrix<T>& m)const;
void multiadd(const Term<T>& t);
//matrix<T> operator*(const matrix<T>& m);
private:
void Append(const Term<T>&);
int rows,cols;
int terms;
Term<T> *a;
int MaxTerms;
};
template <class T>
matrix<T>::matrix(int maxterms)
{
if(maxterms<1)
cout<<"Initialize Failed"<<endl;
MaxTerms=maxterms;
a=new Term<T>[MaxTerms];
terms=rows=cols=0;
}

template <class T>
void matrix<T>::Append(const Term<T>& t)
{
if(terms>=MaxTerms)
cout<<"The array is not big enough"<<endl;
a[terms]=t;
terms++;
}
template <class T>
matrix<T> matrix<T>::operator+(const matrix<T>& m)
{
if( (rows!=m.rows)||(cols!=m.cols) )
{
cout<<"The matrix can't be added together"<<endl;
system("pause");
}
matrix<T> w(1000);
w.rows=rows;
w.cols=cols;
w.terms=0;
bool getm=0;
bool gett=0;
for(int i=0;i<terms;i++)
{
for(int j=0;j<m.terms;j++)
{
if( (a[i].row==m.a[i].row)&&(a[i].col==m.a[i].col) )
{
Term<T> t;
t.row=a[i].row;
t.col=a[i].col;
t.value=a[i].value+m.a[i].value;
w.Append(t);
getm=1;
gett=1;
}
if(getm==0)
{
w.Append(m.a[i]);
}
else
getm=0;
}
if(gett==0)
{
w.Append(a[i]);
}
else
gett=0;
}
return w;
}
#include <iostream>
#include <fstream>
#include <vector>
#include "matrix.h"
using namespace std;

int main()
{
ofstream out("matrix.txt");
matrix<int> x(1000);
x.inputmatrix("sparsematrix1.txt");
matrix<int> y(1000);
y.inputmatrix("sparsematrix2.txt");
out<<"This is the first matrix"<<endl;
out<<x;
out<<"This is the second matrix"<<endl;
out<<y<<endl;
matrix<int> z(1000);
z=x+y;
out<<z;
return 0;
}
重载,矩阵

------解决方案--------------------
堆栈出现了问题,你这个的debug,看看哪里是不是调用了野指针,或者是益处的现象
------解决方案--------------------
点“重试”,然后看“调用堆栈”,分析代码
------解决方案--------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。