誰かが何かを言う前に、これはおそらく推奨されないことを知っていますが、それを行うためのより良い方法や、奇妙なことを超えない理由があるかどうかはまだ興味があります.
クラス内の意味的に名前が付けられたメンバーを使用して配列の要素に直接アクセスしたいが、配列を反復処理でき、ゲッターまたはセッターメソッドを呼び出し/作成する必要がないため、これを調べ始めました。
このようなクラス定義があります。
class Vertex{
public:
Vertex(float x,float y,float z,float w);
float v[4];
float &x,&y,&Z,&w;
};
そして、このようなコンストラクタ。私の質問はです。コンストラクターで行っていることを行うより良い方法はありますか?
Vertex::Vertex(float vx,float vy,float vz,float vw):
x(*const_cast<float*>( &this->v[0] )),
y(*const_cast<float*>( &this->v[1] )),
z(*const_cast<float*>( &this->v[2] )),
w(*const_cast<float*>( &this->v[3] ))
{
v[0]=vx;
v[1]=vy;
v[2]=vz;
v[3]=vw;
}
編集
私はばかです... ジョナサン・ウェイクリーが言ったようにすればいいのです。
x(v[0])
私がそれを試したとき、私は以前に他の問題を抱えていたと思います。しかたがない。