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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 20:59   #11
Oleg_SK
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 42
По умолчанию

Функция не должна возвращать в вызывающую функцию ссылку на свою локальную переменную.
Oleg_SK вне форума Ответить с цитированием
Старый 10.06.2010, 21:06   #12
kutnyuk
 
Регистрация: 10.06.2010
Сообщений: 4
По умолчанию

если убрать амперсант из типа возвращаемого значения, то ничего не изменится, объект сначала уничтожается.
Как же мне вернуть из функции результат сложения двух объектов, не понимаю.
kutnyuk вне форума Ответить с цитированием
Старый 10.06.2010, 21:22   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у нас же + а не +=, то есть должен поидее новый объект появится.
итого имеем.
Код:
	matrix* temp=new matrix(*this);
	for(int i=0;i<size;i++){
		for(int j=0;j<size;j++){
			temp.arr[i][j]=arr[i][j]+a.arr[i][j];
		}
	}
	return *temp;
я обычно указатель на объект возвращаю, но ссылка поидее возможна.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2010, 23:31   #14
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

оператор = перегрузите
иначе либо течь будет, либо сегфолт, тут уж как повезёт.
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux

Последний раз редактировалось ozo; 10.06.2010 в 23:34.
ozo вне форума Ответить с цитированием
Старый 11.06.2010, 01:32   #15
kutnyuk
 
Регистрация: 10.06.2010
Сообщений: 4
По умолчанию

Премного благодарствую!!!!!!!!!
Перегрузил оператор = и все заработало!!!!!!!!
Кстати в перегрузке + возвращаю просто копию объекта, не надо ссылки или указателя
Код HTML:
matrix matrix::operator+ (const matrix& a)
{	
    matrix temp;	
	for(int i=0;i<size;i++){
		for(int j=0;j<size;j++){
			temp.arr[i][j]=arr[i][j]+a.arr[i][j];
		}
	}	
	return temp;
}

Последний раз редактировалось kutnyuk; 11.06.2010 в 01:42.
kutnyuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические объекты 095 Общие вопросы Delphi 2 04.06.2011 19:09
Реалирация подсчёта ссылок на объекты класса подобно объектом интерфейса Altera Общие вопросы Delphi 2 26.05.2010 23:17
Объекты, массивы. smb. Помощь студентам 1 25.05.2009 19:13
Динамические объекты 095 Общие вопросы Delphi 1 04.10.2007 21:16