3

私はC#の世界から来て、このようなことをしていましたが、許可されています。C ++で試してみると、コンパイラエラーは発生しませんが、実際に機能しているとは確信していません.

したがって、より経験豊富な人には、次のようなことをすることが許されていますか?

Entity->SetPosition(Vector2(200, 400));

In Vector2 はクラスであり、設定位置のパラメータにはベクトルが必要ですか? これは許可されていますか、それとも次のように変数を事前に初期化する必要がありますか?

Vector2 aVector(200, 400);
Entity->SetPosition(aVector);

ありがとうデビッド

4

2 に答える 2

8
Entity->SetPosition(Vector2(200, 400));

次のいずれかとして定義している場合は問題ありません (望ましい)SetPosition :

void SetPosition(Vector2 const & v); //Okay : const reference
void SetPosition(Vector2  v);        //okay : value

つまり、引数をreferenceとして、または単にvalueSetPositionとして受け入れます。const

ただし、これは機能しません。

void SetPosition(Vector2 & v);  //not okay : non-const reference

--

C++11 では、次のように記述できます(この動作を有効にするために実装している場合)Vector2

Entity->SetPosition({200, 400});

これを指摘してくれた@Simonに感謝します。

于 2012-07-12T06:53:33.827 に答える
1

一般的にはい、これで問題ありません。一般に、C++ の Set スタイル API は、値またはconst &設定される値のいずれかを取ります。どちらの場合も、インライン式を使用しても問題ありません。

class Entity { 
public:
  void SetPosition(const Vector2& value) { ... }
  void SetPosition(Vector2 value) { ... } 
};

SetPositionただし、参照だけを取る場合は合法ではありません

void SetPosition(Vector2& value) { ... }

これはセッターの一般的な慣用句ではありませんが、

于 2012-07-12T06:54:25.687 に答える