Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2012, 15:45   #1
RaTeN
Пользователь
 
Регистрация: 14.11.2010
Сообщений: 25
Сообщение Не понятная ошибка с перегрузкой операторов

Что-то криво возвращает объект... Кину весь код для наглядности
Код:
#include <iostream>
using namespace std;

class Matrix
{
	int **arr, **arr2;;
	int m, n;
public: 
	Matrix(int n, int m);
	~Matrix();
	void create();
	void show();
	Matrix operator+(Matrix A);
	
};

Matrix::Matrix (int n1, int m1) 
{ 
	arr=new int*[n1];
	for(int i=0;i<n1;i++)
	{
	   arr[i]=new int [m1];
	}
	arr2=new int*[n1];
	for(int i=0;i<n1;i++)
	{
	   arr2[i]=new int [m1];
	}
	n=n1;
	m=m1;	
}

Matrix::~Matrix() 
{	
	for (int i=0;i<m;i++)
	{
		delete []arr[i];
	}
	delete []arr;
}

void Matrix::create()
{
	int i, j;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			cin>>arr[i][j];
}

void Matrix::show()
{
	int i, j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			cout<<arr[i][j];
		}
		cout<<"\n"<<endl;
	}
}

Matrix Matrix::operator+(Matrix A)
{
	Matrix temp(n,m);
	for(int i=0; i<n; i++)
		for(int j=0; j<m; j++)
			temp.arr[i][j]=arr[i][j]+A.arr[i][j];
	temp.show();   // тут все четко
	return temp;
	
}


int main()
{
	int i;
	Matrix a(2,2);
	Matrix b(2,2);
	Matrix c(2,2);
	a.create();
	b.create();
	a.show();
	b.show();
	(a+b).show();	//тут не пашет... 
	a.show();
	b.show();
	
	
	cin>>i;

}
RaTeN вне форума Ответить с цитированием
Старый 10.03.2012, 15:53   #2
RaTeN
Пользователь
 
Регистрация: 14.11.2010
Сообщений: 25
По умолчанию оп

функция show
кстати *this нормально проходит, не пойму никак(
RaTeN вне форума Ответить с цитированием
Старый 10.03.2012, 15:56   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

напишите конструктор копирования, и оператор присваивания.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2012, 16:09   #4
RaTeN
Пользователь
 
Регистрация: 14.11.2010
Сообщений: 25
По умолчанию Спасибо

Спасибо, все работает с конструктором копий
RaTeN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с перегрузкой операторов Furchtlos Общие вопросы C/C++ 26 28.12.2011 01:39
Не понятная ошибка ReaktiVe_SworD Общие вопросы C/C++ 0 02.10.2011 13:09
Проблема с перегрузкой операторов в C++ StudentofSUSU Помощь студентам 2 30.09.2010 10:04
Проблема с перегрузкой операторов, не могу разобраться mrLee Помощь студентам 1 30.01.2010 00:23
Проблема с перегрузкой операторов, не могу разобраться mrLee Общие вопросы C/C++ 0 29.01.2010 18:45