由于某些原因,我的==函数中的对象的值为0,当我尝试运行程序尝试比较两个不同的对象时,我在比较中得到了错误的多余代码。我不知道自己做错了什么
我的主要是
#include "vector.h"
int main()
{
Matrix<int> A;//Assume all three objects have inital values beacuse thats not the main issue
Matrix<int> B;//
Matrix<int> D;//
if(A+B==A*D)
cout<<"A+B==A*D is true"<<endl;
else
cout<<"A+B==A*D is false"<<endl;
}
In my header I have:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
template <class T>
class Matrix{
public:
Matrix();
Matrix(T diagonal);
template<class H>
friend bool operator ==(const Matrix<H>& A,const Matrix<H>& B);
private:
const static int n=3;
T a[n][n];
};//class declaration
template <class T>
Matrix<T>::Matrix(){
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
a[i][j]=0;
}
template <class T>
Matrix<T>::Matrix(T diagonal){
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
if (i==j)
a[i][j]=diagonal;
else
a[i][j]=0;
}
bool operator ==(const Matrix<T> &A,const Matrix<T> &B)
{
int i,j;
for(int i=0;i<A.n;i++)
for(int j=0;j<B.n;j++)
//cout<<"here's a: "<<A.a[i][j]<<endl;
cout<<B.a[i][j]<<endl;
if(A.a[i][j]!=B.a[i][j])//i get a bad access code and idk y
{
return false;
}
return true;
}