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

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

Войти
Регистрация
Восстановить пароль
 
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
#1

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

06.07.2010, 02:12. Просмотров 454. Ответов 6
Метки нет (Все метки)

Исправьте ошибку, неуказанный тип возвращаемого значения, какая я то глупая ошибка, но я не могу понять
На этой строке
Код
point1=point2+5;
Код
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Point{
public:
double x,y;
  };
Point operator+(Point& pt1, Point& pt2){
  Point new_pt;
  new_pt.x=pt1.x+pt2.x;
  new_pt.y=pt1.y+pt2.y;
  return new_pt;
	  }
  int main(){
		Point point1,point2;
  point2.x=2.0;
  point2.y=4.0;
  point1=point2+5;
  return 0;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2010, 02:12     Перегрузка операторов
Посмотрите здесь:

Перегрузка операторов - C++
написал программу. проверил. вроде все правильно. но не работает. программа долjна посредством перегрузки знака = скопировать из строки S1...

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

[C++] Перегрузка операторов - C++
Помогите пожалуйста перегрузить операторы в матрице: +=, i++, != и Перегрузил *= но не уверен, что так надо =\ Буду очень...

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
6a6kin
232 / 102 / 2
Регистрация: 18.04.2010
Сообщений: 295
06.07.2010, 02:45     Перегрузка операторов #2
1. Неправильная перегрузка(я вообще хз, под какими грибами ты писал этот код)
2. Несоответствие типов с заданными аргументами.

Мой вариант решения:
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
#include <conio.h>
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class Point
{
public:
double x,y;
 
Point() : x(0.0), y(0.0)
{}
Point( double a, double b ) : x(a), y(b)
{}
Point& operator+(Point pt2)const;
};
//-----------------------------------------------------
Point& Point::operator+(Point pt2)const
{
    return Point( x+pt2.x, y+pt2.y );
}
////////////////////////////////////////////////////////////////
void main()
{
  Point point1, point2( 2.0,  4.0 );
  point1.x = 5.0;
  cout << "x: " << (point2 + point1).x << ", y: " << (point2 + point1).y;
 
  _getch();
}
Камменты нужны?
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
06.07.2010, 03:38     Перегрузка операторов #3
Цитата Сообщение от 6a6ka Посмотреть сообщение
Неправильная перегрузка(я вообще хз, под какими грибами ты писал этот код)
Ваш код не лучше...
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
06.07.2010, 03:44  [ТС]     Перегрузка операторов #4
Код
Point() : x(0.0), y(0.0)
{}
Point( double a, double b ) : x(a), y(b)
{}
Point& operator+(Point pt2)const;
};
Для меня подобная запись не знакома, а точнее
Код
 : x(0.0), y(0.0)
И еще мне нужна перегрузка глобальной функцией, а не методом класса
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
06.07.2010, 03:51     Перегрузка операторов #5
6a6ka, Проблема здесь..
C++
1
2
3
4
Point& Point::operator+(Point pt2)const
{
    return Point( x+pt2.x, y+pt2.y );
}
И еще мне нужна перегрузка глобальной функцией, а не методом класса
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
62
63
64
65
66
67
#include <iostream>
 
class Point{
 
    friend std::ostream &operator << (std::ostream &lhs, const Point &rhs){
        return lhs << "X: " << rhs.x << " Y: " << rhs.y;
    }
 
    friend Point operator + (const double &lhs, const Point &rhs);
public:
 
    Point(double _x = 0.0, double _y = 0.0): x(_x), y(_y){
    }
 
    Point operator + (const Point &rhs) const{
        return Point(x + rhs.x, y + rhs.y);
    }
 
    Point operator + (const double &rhs) const{
        return Point(x + rhs, y + rhs);
    }
 
    Point &operator += (const Point &rhs) {
        x += rhs.x;
        y += rhs.y;
 
        return *this;
    }
 
    Point &operator += (const double &rhs) {
        x += rhs;
        y += rhs;
 
        return *this;
    }
 
 
private:
    double x;
    double y;
};
 
Point operator + (const double &lhs, const Point &rhs){
    return Point(lhs + rhs.x, lhs + rhs.y);
}
int main()
{
 
    Point a1(1.0, 1.0), a2(2.0, 3.0), a3;
 
    a3 = a1 + a2;
    std::cout << a3 << std::endl;
 
    a3 = a1 + 2.1;
    std::cout << a3 << std::endl;
 
    a3 += 0.3;
    std::cout << a3 << std::endl;
 
    a3 += a2;
    std::cout << a3 << std::endl;
 
    a3 = 10.1 + a1;
    std::cout << a3 << std::endl;
 
    return 0;
}
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
06.07.2010, 04:53  [ТС]     Перегрузка операторов #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Point{
public:
double x,y;
  };
Point operator+(Point& pt1, Point& pt2){
  Point new_pt;
  new_pt.x=pt1.x+pt2.x;
  new_pt.y=pt1.y+pt2.y;
  return new_pt;
          }
  int main(){
                Point point1,point2;
  point2.x=2.0;
  point2.y=4.0;
  point1=point2+5;
  return 0;
  }
Меня уже таращит от компа, во я тупанул , конечно уже почти 2 суток почти не отрываясь сижу
Вот правильный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Point{
public:
double x,y;
  };
Point operator+(Point& pt1, int n){
  Point new_pt;
  new_pt.x=pt1.x+n;
  new_pt.y=pt1.y+n;
  return new_pt;
          }
  int main(){
  Point point1,point2;
  point2.x=2.0;
  point2.y=4.0;
  point1=point2+5;
  return 0;
  }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2010, 09:30     Перегрузка операторов
Еще ссылки по теме:

Перегрузка операторов - C++
Осуществите перегрузку оператора “+=” так, чтобы при его использовании сумма увеличивалась на 5. Помогите, срочно.

Перегрузка операторов С++ - C++
Задание: Написать код на языке С++ где реализуется перегрузка операторов. Тематика: База данных института(студенты, аспиранты,...

перегрузка операторов - C++
Всем привет. Дошел до темы перегрузки операторов и возникло два вопроса. Первый: Чем отличается вот этот код String ...

Перегрузка операторов >>, << - C++
Помогите перегрузить операторы ввода и вывода в классе Time. (Я совсем-совсем новичек...)Заранее всем спасибо.class Time { friend...


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

Или воспользуйтесь поиском по форуму:
6a6kin
232 / 102 / 2
Регистрация: 18.04.2010
Сообщений: 295
06.07.2010, 09:30     Перегрузка операторов #7
Когда выключил комп, понял. Думал, что утром тихо все исправлю))
Ну ошибся на одну амперсанду
Yandex
Объявления
06.07.2010, 09:30     Перегрузка операторов
Ответ Создать тему
Опции темы

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