Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.89
softrix
0 / 0 / 0
Регистрация: 05.04.2008
Сообщений: 48
#1

Перегрузка операторов ? - C++

05.04.2008, 20:02. Просмотров 7746. Ответов 4
Метки нет (Все метки)

Народ подскажите, как сделать перегрузку для такой задачи
нужно перегрузить оператор + чтобы правильно выполнялось сложение для следующих примеров:

Point pt1;
Point pt2;

pt1 = 5 + pt2
pt1 = pt2 + 5

//Для

pt1 = pt2 + 5

//понятно


//Определение:
Point& operator + (Point &ref);

//тело:
Points& Points::operator + (Points &ref)
{
m_x=m_x + ref.m_x;
m_y=m_y + ref.m_y;

return *this;
}

//А вот для это решение уже кончено не работает
pt1 = 5 + pt2

а как сделать по другому, понять не могу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2008, 20:02     Перегрузка операторов ?
Посмотрите здесь:

Перегрузка операторов - C++
Помогите решить задачу на c++ мучаюсь 3 день Перегрузить операторы «==» и «!=» для строк. Оператор «==» возвращает соответственно 1,...

Перегрузка операторов - C++
Хочу написать функцию вывода стека на экран. Стек построен на основе динамического массива который написал я. И вот интересно, при написаны...

Перегрузка операторов >>, <<, [] - C++
задача: написать перегруженные операторы &lt;&lt;, &gt;&gt; и для объекта массив деков символов. Объект дек реализован. проблема с квадратными...

Перегрузка операторов - C++
Доброго времени суток. Начал изучать основы ООП, дошел до перегрузки операторов. В программе возникает ошибка при проверке любого...

Перегрузка операторов - C++
Привет всем.Вот и начался новый учебный год,и значит началось програмирование, и значит начались мои проблемы. Первой задачей было...

Перегрузка операторов - C++
Я тут пока изучаю перегрузку, написал следующий код: class String{ private: size_t size_; char* data_; public: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SVEN
10 / 10 / 1
Регистрация: 25.03.2008
Сообщений: 50
05.04.2008, 22:24     Перегрузка операторов ? #2
Цитата Сообщение от softrix Посмотреть сообщение
Народ подскажите, как сделать перегрузку для такой задачи
нужно перегрузить оператор + чтобы правильно выполнялось сложение для следующих примеров:

Point pt1;
Point pt2;

pt1 = 5 + pt2
pt1 = pt2 + 5

//Для

pt1 = pt2 + 5

//понятно


//Определение:
Point& operator + (Point &ref);

//тело:
Points& Points::operator + (Points &ref)
{
m_x=m_x + ref.m_x;
m_y=m_y + ref.m_y;

return *this;
}

//А вот для это решение уже кончено не работает
pt1 = 5 + pt2

а как сделать по другому, понять не могу.
Для этого объявляй ф-ции перегрузки операторов не как ф-ции члены класса, а как ф-ции-друзья. Пример:
Код
friend Point operator+(const Point& ob1,const Point& ob2)
А дальше уже

Код
Point& [COLOR=#0000cc]operator[/COLOR] + (const Point& ob1,const Point& ob2)
{
Point ob;
ob.m_x=ob1.m_x + ob2.m_x;
ob.m_y=ob1.m_y + ob2.m_y;
 
[COLOR=#0000cc]return[/COLOR] ob;
}
softrix
0 / 0 / 0
Регистрация: 05.04.2008
Сообщений: 48
05.04.2008, 22:54  [ТС]     Перегрузка операторов ? #3
А, с помощью объявления в классе не получится ? Только через функции друзья это можно сделать ? А то у меня в лабе задание сделать через функции класса ! Может это конечно препод прикалолся )
SVEN
10 / 10 / 1
Регистрация: 25.03.2008
Сообщений: 50
06.04.2008, 10:47     Перегрузка операторов ? #4
Через объявление ф-ции члена класса pt1 = 5 + pt2 считаться не будет! Это выражение будет считаться только через друзья класса!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2008, 17:01     Перегрузка операторов ?
Еще ссылки по теме:

Перегрузка операторов >> - C++
доброго времени суток. не как не получаеться перегрузить операторы класса. в общем, есть массив типа MString (другой класс) в котором...

Перегрузка операторов - C++
Исправьте ошибку, неуказанный тип возвращаемого значения, какая я то глупая ошибка, но я не могу понять На этой строке point1=point2+5;...

Перегрузка операторов - C++
Есть у меня свой тип рациональных дробей, и вот мне надо перегрузить оператор &quot;+&quot; таким образом, что бы работала такая строчка кодаRational...

перегрузка операторов - C++
Товарисссчи, что значит запись: CVector2D::operator+(CVector2D const&amp; v1)const файл *срр и чем отличается от CVector2D const operator...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
softrix
0 / 0 / 0
Регистрация: 05.04.2008
Сообщений: 48
06.04.2008, 17:01  [ТС]     Перегрузка операторов ? #5
Понял, спасибо так и сделаю
Yandex
Объявления
06.04.2008, 17:01     Перегрузка операторов ?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru