重载operator ==的C ++错误

时间:2015-06-27 01:26:06

标签: c++ operator-overloading

由于某些原因,我的==函数中的对象的值为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;
    }

0 个答案:

没有答案