3

独自の型の定義済みの値を返すプロパティを持つ構造体を C++ で定義しようとしています。

多くの API と同様に、次のようなベクトルと色があります。

Vector.Zero; // Returns a vector with values 0, 0, 0
Color.White; // Returns a Color with values 1, 1, 1, 1 (on scale from 0 to 1)
Vector.Up; // Returns a vector with values 0, 1 , 0 (Y up)

ソース: http://msdn.microsoft.com/en-us/library/system.drawing.color.aspx (MSDN の Color タイプのページ)

私は何時間も検索しようとしてきましたが、それが何と呼ばれているのか理解することさえできません。

4

3 に答える 3

4
//in h file
struct Vector {
 int x,y,z;

 static const Vector Zero; 
};

// in cpp file
const Vector Vector::Zero = {0,0,0};

このような?

于 2013-02-20T05:17:09.843 に答える
2

これは静的プロパティです。残念ながら、C++ にはどのタイプのプロパティもありません。これを実装するには、おそらく静的メソッドまたは静的変数のいずれかが必要です。私は前者をお勧めします。

たとえば、次のVectorようなものが必要です。

struct Vector {
  int _x;
  int _y;
  int _z;

  Vector(int x, int y, int z) {
    _x = x;
    _y = y;
    _z = z;
  }

  static Vector Zero() {
    return Vector(0,0,0);
  }
}

Vector::Zero()次に、ゼロ ベクトルを取得するように記述します。

于 2013-02-20T05:15:07.453 に答える
2

静的メンバーでそれを模倣できます。

struct Color {
    float r, g, b;
    Foo(float v_r, float v_g, float v_b):
        r(v_r), g(v_g), b(v_b){};
    static const Color White;
};

const Color Color::White(1.0f, 1.0f, 1.0f);

// In your own code
Color theColor = Color::White;
于 2013-02-20T05:31:31.377 に答える