Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
tyna
2 / 2 / 0
Регистрация: 28.11.2013
Сообщений: 77
#1

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

21.05.2014, 00:43. Просмотров 435. Ответов 3
Метки нет (Все метки)

Есть класс 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);
 }
Так пробую, не получается...
Что тут нужно изменить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 00:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие &quot;зарплата&quot; не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....

Класс "Длинные числа" с перегрузкой операторов - C++
только-только начал изучение классов, задание написать класс длинных чисел с перегрузкой операторов если честно, еще очень смутно...

Написать класс "Дата" с перегрузкой операторов - C++
Здравствуйте, задание: написать класс Дата с перегрузкой операторов. Вот мой код. Почему-то компилятор выбивает, что в main Data и d1 не...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Описать класс "Контейнер" как объект, предназначенный для транспортировки классов "Строительных блоков" - C++
1. Опишите класс &quot;Строительный блок&quot;, описывающий габариты и массу блока прямоугольной формы. Данные класса: Габариты, масса. Методы...

3
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
21.05.2014, 01:30 #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);
 }
1
tyna
2 / 2 / 0
Регистрация: 28.11.2013
Сообщений: 77
21.05.2014, 01:39  [ТС] #3
Евгений Буланов, при компиляции подчеркивает Circle и :
Код
Circle::Circle(const Point &obj, double rad) : p(obj), r(rad){}
..... И выдает 30 ошибок
0
Евгений Буланов
6 / 6 / 4
Регистрация: 23.10.2013
Сообщений: 63
21.05.2014, 02:03 #4
Да, сори... Кусок только глянул... Но там весь код нужно переделывать... очень устал...
это не будет работать r = c.r
это не будет работать c.p.get_x()
это не будет работать c.p.get_y()
это не будет работать r = r + c.r;

вы не можете обращаться через обьект к приватным членам класса!!! извините, там весь код переписывать, это долго...
1
21.05.2014, 02:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 02:03
Привет! Вот еще темы с ответами:

Описание классов. Классы "Шар" и "Ящик для шаров" - C++
1.Опишите класс &quot;шар&quot;, описывающий габариты и вес. Данные класса: радиус шара,вес. Методы класса: должны обеспечить минимальную...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...


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

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

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