C++用类实现矩阵时出现的问题,主要是二维数组,还需要动态申请内存搞得有点晕

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:35:13
不要新的代码,请大虾帮我看看错误吧,谢谢!
释放内存有问题,去掉那段代码后能通过编译但运行有问题。。。
#include<iostream>
#include<stdlib.h>
#include<malloc.h>
using namespace std;

class Matrix
{
public:
Matrix() {lines=0;rows=0;}
Matrix(int x,int y);
Matrix(Matrix &m);
int** GetPtr() {return ptr;}
void size()
{
ptr=new int * [rows];
for(int i = 0; i < lines; i++)
{
ptr[i] = new int[lines];
}
}
friend void InputLine(Matrix &a);
friend void InputRow(Matrix &a);
friend void Initi( Matrix &a );
friend void PlusMatrix(Matrix &a,Matrix &b,Matrix &c);
friend void MinusMatrix(Matrix &a,Matrix &b,Matrix &c);
void disp()
{
int i,j;
cout<<"The matrix is:"<<endl;

你的程序缺了太多的细节处理,
而且动态二位数组的申请,访问和删除都有问题,
下面已经都给你改好了,并且在VC上编译运行通过,具体的看一下注释:
#include<iostream>
#include<stdlib.h>
#include<malloc.h>
using namespace std;

class Matrix
{
public:
Matrix() {lines=0;rows=0;}
Matrix(int x,int y);
Matrix(Matrix &m);
int** GetPtr() {return ptr;}
int GetLine(){return lines;}//这里需要加一个lines返回的接口
void size()
{
ptr=new int * [rows];
for(int i = 0; i < lines; i++)
{
ptr[i] = new int[lines];
}
}
friend void InputLine(Matrix &a);
friend void InputRow(Matrix &a);
friend void Initi( Matrix &a );
friend void PlusMatrix(Matrix &a,Matrix &b,Matrix &c);
friend void MinusMatrix(Matrix &a,Matrix &b,Matrix &c);
void disp()
{