注册 登录
编程论坛 新人交流区

debug assertion failure的问题

lonely00 发布于 2007-10-23 14:19, 643 次点击

#include<iostream>
#include<stdio.h >
#include<cstdlib >
using namespace std;

class matrix
{
int const line; //矩阵的行
int const column; //矩阵的列
long double **matrip;
public:
matrix(int,int);
~matrix(){for(int i=0;i<column;i++)delete []matrip[i]; delete []matrip;}
matrix E(int,int);
void inputm();
void outputm();
matrix operator+(matrix) const;
matrix& operator=(matrix&);
};

matrix::matrix(int l,int c):line(l),column(c)
{
matrip=new long double *[line];
for(int i=0;i<line;i++)
{
matrip[i]=new long double[column];
for(int j=0;j<column;j++)
matrip[i][j]=l;
}
}

void matrix::inputm()
{
cout<<"请按行输入"<<line<<"*"<<column<<"矩阵数据"<<endl;
for(int i=0;i<line;i++)
for(int j=0;j<column;j++)
cin>>matrip[i][j];
}

void matrix::outputm()
{
cout<<"按行输出的"<<line<<"*"<<column<<"矩阵数据"<<endl;
for(int i=0;i<line;i++)
{
for(int j=0;j<column;j++)
cout<<matrip[i][j]<<" ";
cout<<endl;
}
}

matrix matrix::operator +(matrix m) const
{
if(line!=m.line||column!=m.column)
{
cout<<"error,their sizes differ";
exit(1);
}
matrix tem(line,column);
for(int i=0;i<line;i++)
for(int j=0;j<column;j++)
tem.matrip[i][j]=matrip[i][j]+m.matrip[i][j];
return tem;
}
matrix& matrix::operator =(matrix& m)
{
if(line!=m.line||column!=m.column)
{
cout<<"error,their sizes differ";
exit(1);
}
for(int i=0;i<line;i++)
for(int j=0;j<column;j++)
matrip[i][j]=m.matrip[i][j];
return *this;
}
void main()
{
matrix a(2,2),b(2,2),c(2,2);
a.inputm();
a.outputm();
b.outputm();
c=a+b;
c.outputm();
}

代码没有语法错误,但是在执行到+函数的return语句时就出现debug assertion failure,请教大家是什么问题啊!!!!急急急!!!
只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2007-10-23 14:21:35编辑过]

2 回复
#2
lileyear2007-10-23 15:55
你没写 复制构造函数
也就是 matrix(matrix& m)

operator + 返回的是tem,但返回时会复制给返回值,要用到这个函数

至于写什么,把你那个operator= 拷过去就行了
#3
lonely002007-10-24 21:33
回复:(lileyear)你没写 复制构造函数也就是 matrix...
怎么调试回复First-chance exception in matri.exe: 0xC0000005: Access Violation.,有是什么原因呢?
1