23.10.2011, 14:42. Просмотров 947. Ответов 11
Допустим, есть базовый класс Фигура и наследники "Треугольник", "Квадрат". Мне нужно создать метод доступа к функциям наследника.
Просьба не говорить: "это не правильный подход к ООП, юзай абстрактный метод". Мне нужна именна такая реализация (Агрегирование)
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| class Figure
{
public:
// создать метод доступа ToTriangle(), ToRectangle()
};
struct Triangle // : Figure
{
int GetArea() const { return itsArea; }
};
struct Rectangle // : Figure
{
int GetPerimeter() const { return itsPerimeter; }
};
void main()
{
Figure pFigure;
/* вот тут должен открываться доступ к функциям Triangle.*/
pFigure.ToTriangle().GetArea();
/* вот тут должен открываться доступ к функциям Rectangle.*/
pFigure.ToPerimter().GetPerimter();
} |
|
Пытался сам реализовать с приведениями типов. Покажите свою версию реализаций доступа(
без ссылок на сторонние ресурсы)