Point3d, Класс 3-мерной точки. |
Здравствуйте, гость ( Вход | Регистрация )
Point3d, Класс 3-мерной точки. |
motoden |
10.10.2014, 23:51
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 13.10.2012 Пользователь №: 3555 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создал класс 3-мерной точки, т.к. не нашел готового в библиотеке. QPoint реализован только для 2-мерного случая. Представляю его на ваш суд. Кто что думает?
|
|
|
lanz |
11.10.2014, 12:12
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
0. http://qt-project.org/doc/qt-4.8/qvector3d.html
Ну а по поводу самописного, все зависит от того как вы его будете использовать Из очевидного: 1. Не всегда нужен double, int тоже часто используется. В Qt это решено QPoint и QPontF, но можно сделать шаблон в вашем простом случае. 2. Вкусовщина, но два конструктора можно заменить на 1, тогда класс можно использовать и для двумерного и для одномерного случая Point3D( double x = 0, double y =0, double z = 0 ); 3. Неправильный конструктор копирования, в параметрах должно быть const Point3D&. 4. Если перегружаете конструктор копирования, перегружайте operator= 5. Во всех перегруженных операторах параметры должны быть const Point3D& 6. operator+, operator* должны быть const 7. operator+=, operator*= должен возвращать const Point3D& 8. Нет оператора -, унарный минус. 9. Нет операторов сравнения. 10. Вкусовщина, вместо: result.setX(val_x * in_point3d.x()); Можно писать result.val_x = val_x * in_point3d.val_x; 11. Геттеры должны быть константные. Рекомендую почитать: http://www.amazon.com/Effective-Specific-I...s/dp/0321334876 http://www.amazon.com/More-Effective-Impro...s/dp/020163371X В общем, с моей колокольни, лучше бы вы оставили его POD-типом http://stackoverflow.com/questions/146452/...-pod-types-in-c |
|
|
Текстовая версия | Сейчас: 2.12.2024, 11:45 |