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

Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle - C++

Восстановить пароль Регистрация
 
tyna
2 / 2 / 0
Регистрация: 28.11.2013
Сообщений: 65
21.05.2014, 00:43     Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle #1
Есть класс Point (элементы данных x,y) и класс Circle (элементы данных р(типа Point),r).
Их заголовочные файлы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Point {
private:
    double x, y;
public:
    Point();
    Point(double a, double b);
    Point(const Point &obj);
    Point move(double a, double b);
    Point assign(const Point &obj);
    friend void print(const Point &obj);
    double get_x() { return x; }
    double get_y() { return y; }
    void put_x(double a) { x = a; }
    void put_y(double a) { y = a; }
    _declspec(property(get=get_x, put=put_x)) double X;
    _declspec(property(get=get_y, put=put_y)) double Y;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using namespace std;
class Circle {
private:
    Point p;
    double r;
public:
    Circle();
    Circle(Point &obj, double rad);
    Circle(const Circle &c);
    double square() const;
    Circle operator=(Circle &c);
    Circle operator+=(Circle &c);
    friend ostream& operator<<(ostream& s, Circle &c);
};
И файлы исходного кода:
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
#include <iostream>
#include "point.h"
using namespace std;
Point::Point() {
    x = 0;
    y = 0;
}
Point::Point(double a, double b) {
    x = a;
    y = b;
}
Point::Point(const Point &obj) {
    x = obj.x;
    y = obj.y;
}
Point Point::move(double a, double b) {
    x = a;
    y = b;
    return *this;
}
Point Point::assign(const Point &obj) {
    x = obj.x;
    y = obj.y;
    return *this;
}
void print(const Point &obj) {
    cout << "x: " << obj.x << ", y: " << obj.y << endl;
}
это для класса Point
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
#include <iostream>
#include "circle.h"
using namespace std;
Circle::Circle ():p(),r(){}
Circle::Circle(const Point &obj, double rad) :p(obj),r(rad){}
Circle::Circle(const Circle &c) : p(c){}
double Circle::square() const
{
    return 3.14*r*r;
}
 Circle Circle::operator=(const Circle&c)
{
     p.get_x() = c.p.get_x();
     p.get_y() = c.p.get_y();
    r = c.r;
    return (*this);
}
 Circle Circle::operator+=(Circle&c)
 {
     p.get_x() = p.get_x() + c.p.get_x();
     p.get_y() = p.get_y() + c.p.get_y();
     r = r + c.r;
     return(*this);
 }
Так пробую, не получается...
Что тут нужно изменить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 00:43     Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle
Посмотрите здесь:

C++ Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол"
C++ создал "circle.h" файл. При компиляции Cpp файла выдаёт unable to open include file 'circle.h'
Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000" C++
C++ Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей";
Класс "Длинные числа" с перегрузкой операторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
21.05.2014, 01:30     Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Circle Circle::operator=(const Circle&c)
{
     p.put_x(c.p.get_x())  ;
     p.put_y(c.p.get_y())  ;
    r = c.r;
    return (*this);
}
 Circle Circle::operator+=(Circle&c)
 {
     p.put_x(p.get_x() + c.p.get_x()) ;
     p.put_y(p.get_y() + c.p.get_y()) ;
     r = r + c.r;
     return(*this);
 }
tyna
2 / 2 / 0
Регистрация: 28.11.2013
Сообщений: 65
21.05.2014, 01:39  [ТС]     Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle #3
Евгений Буланов, при компиляции подчеркивает Circle и :
Код
Circle::Circle(const Point &obj, double rad) : p(obj), r(rad){}
..... И выдает 30 ошибок
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
21.05.2014, 02:03     Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle #4
Да, сори... Кусок только глянул... Но там весь код нужно переделывать... очень устал...
это не будет работать r = c.r
это не будет работать c.p.get_x()
это не будет работать c.p.get_y()
это не будет работать r = r + c.r;

вы не можете обращаться через обьект к приватным членам класса!!! извините, там весь код переписывать, это долго...
Yandex
Объявления
21.05.2014, 02:03     Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle
Ответ Создать тему
Опции темы

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