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

Классы для работы с двумерными, трехмерными и н-мерными точками - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Передача параметра предикату в find_if http://www.cyberforum.ru/cpp-beginners/thread790961.html
скажите, можно ли так сдалать: it - итератор it=find_if(it=stud.begin(),it!=stud.end(),function(name)) я хочу булевской функции передать параметр
C++ Добавить кнопку Появилась необходимость добавить функциональную кнопку в уже готовое приложение, не имея программного кода самого приложения. Есть идея как её туда приклеить? http://www.cyberforum.ru/cpp-beginners/thread790951.html
C++ Создать индексированный список с указателями на определенные места исходного списка
индексированные списки. нужно создать список(индексированный) с указателями на определенные места исходного списка?? Добавлено через 29 минут up?
C++ указатель, как его перевести? с++
Доброго времени суток. Подскажите пожалуйста, что означают каждый элемент в данной строке. Это указатель, он есть в двухмерном массиве. Мне нужно для понимания процесса... int *aPtr = (int*)&a;
C++ Переписать с формальными параметрами http://www.cyberforum.ru/cpp-beginners/thread790935.html
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое состоит только из четных цифр исходного числа (функцией оформить определение нового числа для заданного) #include <cstdlib> #include <iostream> using namespace std;
C++ перевести код из Delphi в С++ здрасти можете помочь перевести код из Delphi в С++ шифр Тритемиуса unit MainFrm; interface uses подробнее

Показать сообщение отдельно
djon_tat
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 5
20.02.2013, 17:18     Классы для работы с двумерными, трехмерными и н-мерными точками
Пишу классы для работы с двумерными, трехмерными и n-мерными точками пространства. Решил написать общий базовый класс и от него породить остальные конкретные классы. Получилось пока вот что:

- базовый абстрактный класс Point

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Point
{
public:
 
virtual ~Point();
 
virtual bool operator==(const Point&) const = 0;
 
virtual const Point& operator+=(const Point&) = 0;
 
...
};
- класс двумерных точек Point2D

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
class Point2D: public Point
{
public:
 
Point2D(double x = 0.0, double y = 0.0);
 
~Point2D();
 
void setX(double x);
 
void setY(double y);
 
void set(double x, double y);
 
double x() const;
 
double y() const;
 
bool operator==(const Point2D& point2D) const
{
    return ((m_x == point2D.m_x) && (m_y == point2D.m_y));
};
 
bool operator==(const Point& point) const
{
    return (*this == *dynamic_cast<const Point2D*>(&point));
};
        
const Point2D& operator+=(const Point2D& point)
{
    m_x += point.m_x;
    m_y += point.m_y;
    
    return *this;
};
 
const Point2D& operator+=(const Point& point)
{
    return *this += *dynamic_cast<const Point2D*>(&point);
};
 
...
 
private:
 
double m_x;
 
double m_y;
};
Правильно ли все я написал? Какие подводные камни могут быть в будущем с таким кодом? В частности меня смущает то, что в классе Point2D для каждой операции (в представленном коде для операций == и +=) приходится писать по две функции и одна из функций с использованием dynamic_cast. Может быть есть другой выход(ы)? Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru