I have a class to represent a 3D vector of floats:
class Vector3D { public: float x, y, z; float * const data; Vector3D() : x(0.0), y(0.0),
or you can have an operator[] overload
float operator[](int idx) { switch (idx) { case 0: return x; case 1: return y; case 2: return z; } assert (false); }