0

短い、おそらく愚かな質問。クラスと構造体の場合、コンストラクター引数と同じ名前のメンバー変数が必要な場合があります。例えば:

class Vector3
{
    float x, y, z;

    public Vector3(float x, float y, float z)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

基本的に、これは構造体にも実行したいのですが、構造体コンストラクターで「this」を使用することはできません(これらの使用はクラス用に予約されていると思います)。これを行う方法はありますか、それとも引数に別の名前を付ける必要がありますか?

4

2 に答える 2

7

使用できますが、クラスと同じようにポインターです。

this->x = x;

ちなみに、 astructと aは、デフォルトのアクセス指定子class以外はまったく同じものです。

于 2012-06-26T19:54:21.497 に答える
6

本当にすべきことは、コンストラクターの初期化リストを使用することです。

class Vector3
{
    float x, y, z;

  public:
     Vector3(float x, float y, float z) : x(x), y(y), z(z) {}

};

しかし、構造体での使用に関する不安に関してthisは、クラスとの違いはありません。

混乱を避けるために、データ メンバーに何らかの命名規則を設ける価値があることを付け加えたいと思います。お気に入りは、末尾のアンダースコアまたは先頭のm_.

于 2012-06-26T20:01:42.043 に答える