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

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

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

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

05.04.2008, 20:02. Просмотров 7741. Ответов 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++
C++ [c++] Перегрузка операторов
перегрузка операторов C++
C++ перегрузка операторов С++
C++ Перегрузка операторов
перегрузка операторов C++
Перегрузка операторов C++
Перегрузка операторов C++
C++ Перегрузка операторов
Перегрузка операторов C++
C++ Перегрузка операторов
C++ Перегрузка операторов С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 считаться не будет! Это выражение будет считаться только через друзья класса!
softrix
0 / 0 / 0
Регистрация: 05.04.2008
Сообщений: 48
06.04.2008, 17:01  [ТС]     Перегрузка операторов ? #5
Понял, спасибо так и сделаю
Yandex
Объявления
06.04.2008, 17:01     Перегрузка операторов ?
Ответ Создать тему
Опции темы

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