Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
1

operator+ overload

06.02.2014, 16:02. Показов 1163. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
 
 
class point
{
    private:
        int x;
        int y;
 
    public:
        point():
          x(0),
              y(0) { }
          point(point& src){
             x = src.x;
             y = src.y;
            }
        void set_x(int X) { x=X; }
        int get_x () const { return x; }
        void set_y(int Y) { y=Y; }
        int get_y () const { return y; }
        point& operator= (const point& );
        friend point& operator+(const point& a, const point& b); 
};
 
point& point::operator= (const point& ob){
 
    if(this != &ob)
    { 
        x = ob.x;
        y = ob.y;
    }
 
    return *this;
}
 
point& operator+(const point& a, const point& b){
    point tmp;
    tmp.set_x(a.get_x()+b.get_x());
    tmp.set_y(a.get_y()+b.get_y());
        return (tmp);
 
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    point ob;
    point ob1;
    point ob3;
    ob.set_x(10);
    ob.set_y(13);
    ob1.set_x(10);
    ob1.set_y(13);
    ob3 = ob+ob1;
    std::cout << ob3.get_x() << " " << ob3.get_y();
    
    
    return 0;
}
можете объяснить почему программа не выводит сложение объектов ob и ob1?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2014, 16:02
Ответы с готовыми решениями:

Странная перегрузка операторов (Error: ambiguous overload for 'operator[]')
Что-то я туплю. Есть код: #include&lt;string&gt; struct test { int operator(const...

Почему возникает ошибка? error: ambiguous overload for 'operator>>'
class planet { protected: double distance; int revolve; public: planet(double d,...

Ambiguous overload for 'operator+' (operand types are 'int' and 'Rational')
Решал задачку, все делал по презентации. Создал класс рациональных чисел. Нужно перегрузить...

Неявные приведения типов, error: ambiguous overload for ‘operator=’
Всем привет! Как заставить код работать без костыля? https://rextester.com/SHUYH87895 ...

5
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
06.02.2014, 16:08 2
Лучший ответ Сообщение было отмечено mercury1987 как решение

Решение

Цитата Сообщение от mercury1987 Посмотреть сообщение
point& operator+(
Вы возвращаете временный объект по ссылке.
1
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
06.02.2014, 16:11 3
mercury1987, а где конструктор? где оператор копирования? Вы в операторе + используете временную переменную Вашего класса, которая потом возвращается. То есть, переменная слева от равно(при складывании) должна быть идентичная tmp после возврата, а для этого надо конструктор копирования. еще и временный объект по ссылке возвращаете.
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
06.02.2014, 16:15  [ТС] 4
конструктор копирования в самом классе реализован вот:
C++
1
2
3
4
point(point& src){
             x = src.x;
             y = src.y;
            }
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
06.02.2014, 16:16 5
Цитата Сообщение от mercury1987 Посмотреть сообщение
конструктор копирования в самом классе реализован вот:
простите не увидел. структура оформления у Вас забавная
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
06.02.2014, 16:19  [ТС] 6
спасибо. решилось.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2014, 16:19

Error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}'
на #define LOG(Variable) Log&lt;&lt;&quot;&lt;&quot;;...

Перегрузка операторов operator> и operator* для чисел в разных системах счисления
Мне нужно Перегрузить операции&gt; (сравнение двух целых чисел с учетом системы счисления), *...

Class & operator's |Error: undefined reference to operator
Компилирует нормально, но когда хочу использовать оператор выдает ошибку:undefined reference to...

operator char() или operator int()
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он...

Вызов operator[] через operator[] const
Перелистывал Майерса, наткнулся на код, подскажите пожалуйста почему он советует закомментированный...

Перегрузка operator>> и operator<< в абстрактном классе
Здрасьте! Есть необходимость перегрузить потоки, Я знаю как это сделать через friend, но вот...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru