Vector3D クラスを設計していますが、デカルト基底ベクトルやオリゴなど、よく使用されるベクトルに簡単にアクセスしたいと考えています。以下は、静的メンバーを使用するアプローチです。これはこれを達成する正しい方法ですか?パフォーマンスが重要なポイントになります。
vector.h
#include <iostream>
class Vector3D {
public:
Vector3D(double x=0.0, double y=0.0, double z=0.0) :
x_(x),
y_(y),
z_(z) {};
inline void print() const {
std::cout << x_ << " " << y_ << " " << z_ << std::endl;
}
// Predefined Vectors
static Vector3D ZERO;
static Vector3D X;
static Vector3D Y;
static Vector3D Z;
double x_, y_, z_;
};
ベクトル.cpp
#include "vector.h"
// Predefined vectors
Vector3D Vector3D::ZERO = Vector3D(0.0f, 0.0f, 0.0f);
Vector3D Vector3D::X = Vector3D(1.0f, 0.0f, 0.0f);
Vector3D Vector3D::Y = Vector3D(0.0f, 1.0f, 0.0f);
Vector3D Vector3D::Z = Vector3D(0.0f, 0.0f, 1.0f);
クラスは次のように使用できます。
main.cpp
#include "vector.h"
int main()
{
Vector3D o = Vector3D::ZERO;
Vector3D x = Vector3D::X;
Vector3D y = Vector3D::Y;
Vector3D z = Vector3D::Z;
o.print();
x.print();
y.print();
z.print();
return 0;
}