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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.84
Alexen
5 / 5 / 0
Регистрация: 14.11.2008
Сообщений: 77
#1

Классы и полиморфизм - C++

04.12.2008, 00:50. Просмотров 3027. Ответов 2
Метки нет (Все метки)

Я учел свои ошибки из прошлых топиков и за ответы СПС.
Хочу еще спросить а то путаюсь еще.
Если я в классах вместо наследования использую полиморфизм то классы не обязательно объявлять друзьями? (мона использовать объект созданый при объявлении
полиморфизма в классе Circle как указатель на другой класс Point для дальнейшей работы с элементами класса Point (x, y) в классе Circle?)
Circle.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Circle
{
 friend ostream &operator <<(ostream &, const Circle &);
 public:
 Circle (float = 0, float = 0, float = 0);
 
  void setRadius(float);
  float getRadius() const{return radius;}
  float getArea();
  float getX() const;
  float getY() const;
 
 private:
 Point setPoint;
  float radius;
  float area;
};
Point h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Point
{
 friend ostream &operator<<(ostream &, const Point &);
 friend class Circle;
 
 public:
 
 Point (float = 0.0, float = 0.0);
 
 void setPoint(float, float);
 float getX() const {return x;}
 float getY() const {return y;}
 
private:
float x;
float y;
};
И правильно ли я определил и использовал функции
(float Circle::getX() const, float Circle::getY() const)
классы должны работать как друзья. (но почему снова используется объект класса
Point ? или в другом классе если он тоже друг обязательно создавать объект дружественного ему класса чтоб сослаться через него.)



Circle.cpp

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
Circle::Circle(float r, float x, float y)
:setPoint(x, y)
{
 setRadius(r);
}
 
void Circle::setRadius(float r)
{radius = r;}
 
float Circle::getArea()
{
 area = 3.14159 * radius*radius;
 return area;
}
 
 
float Circle::getX() const
{return setPoint.x;}
 
float Circle::getY() const
{return setPoint.y;}
 
 
ostream &operator<<(ostream &output, const Circle &c)
{
 
 
 output <<"Центр : [" << c.getX() << ", " << c.getY() << "]; Радиус = "
 << setiosflags(ios::showpoint) << setprecision(3)<< c.radius ;
 return output;
}
Добавлено через 4 минуты 38 секунд
И каким способом мона из одного класса вызвать открытые функции другого дружественного ему класса без переопределения функций.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2008, 00:50     Классы и полиморфизм
Посмотрите здесь:

Полиморфизм, классы, вектора - C++
Доброго времени суток! В общем приведу некоторую структуру взаимодействия классов и методов в том виде, в котором я бы хотел, чтобы...

Классы / наследование / полиморфизм - C++
Решите, если несложно, программа вроде довольно простая..., но с с++, я пока неочень... Добавлено через 36 минут вот что я...

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

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

Полиморфизм - C++
Имеется такая задача Создать абстрактный базовый класс Integer (целое) с виртуальными арифметическими операциями и функцией вывода на...

Полиморфизм - C++
полиморфизм runtime vs compile polymorphism: как вы на проектах определяете, когда стоит пользоваться шаблоном, а когда...

Полиморфизм - C++
Прочитал в Википедии что такое полиморфизм: Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций». ...

Полиморфизм - C++
Вот сделал прогу а ее надо было сделать полиморфизмом - кому несложно переделайте #include &lt;iostream.h&gt; #include &lt;conio.h&gt; ...

Полиморфизм и ссылки - C++
Есть коллекция, в которой хранятся ссылки на объекты типа Parent. От Parent наследует класс Child и содержит доп. поле(класс Info). Если я...

ох уж этот полиморфизм - C++
Добрый день. имеются классы: class element {...} class tableProcedure : public element {...} Проблема в следующем: имеется...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,365
04.12.2008, 13:16     Классы и полиморфизм #2
Что-то ты все запутал.... Для какой цели у тебя класс Circle объявлен дружественным классу Point? Для какой такой большой и светлой цели ему нужен доступ к внутреннему устройству класса Point? Ась?
Как вообще у тебя связаны эти два класса?
Alexen
5 / 5 / 0
Регистрация: 14.11.2008
Сообщений: 77
04.12.2008, 14:26  [ТС]     Классы и полиморфизм #3
Заданы 2 класса один Point а другой Circle для того чтоб один как бы наследовал другому координаты x, y но через композицию а Circle просто дополнял его своими не достающими данными и функциями. (наследование не предлагать нужно именно через композицию сделать) как задать понял но как потом вернуть для печати функцией класса Circle x, y класса Point.
думаю надо в функции печати класса Circle создать указатель на класс Point
Point *Ptr = (Point*)&c и через него уже вывести на печать x,y класса Point
Как вы думаете ?

Добавлено через 57 минут 19 секунд
Спс за внимание разобрался сам.
Ответ Создать тему
Опции темы

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