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/0321334876http://www.amazon.com/More-Effective-Impro...s/dp/020163371XВ общем, с моей колокольни, лучше бы вы оставили его POD-типом
http://stackoverflow.com/questions/146452/...-pod-types-in-c