@Andy は、独自の を定義する場合、これを行う方法を説明しましstruct
た。
ただし、代替手段があります。
#include <tuple>
typedef std::tuple<float, float, float> Point3D;
次に、いくつかの関数を次のように定義します。
//non-const version
float& x(Point3D & p) { return std::get<0>(p); }
float& y(Point3D & p) { return std::get<1>(p); }
float& z(Point3D & p) { return std::get<2>(p); }
//const-version
float const& x(Point3D const & p) { return std::get<0>(p); }
float const& y(Point3D const & p) { return std::get<1>(p); }
float const& z(Point3D const & p) { return std::get<2>(p); }
終わり!
これを次のように使用します。
Point3D p {1,2,3};
x(p) = 10; // changing the x component of p!
z(p) = 10; // changing the z component of p!
p.x
の代わりに、あなたが書くことを意味し ますx(p)
。
既存のコードを再利用する方法についての出発点となることを願っています。