C++ では、四角形のパラメーターが関数に渡されます。システムを抽象化しているので、独自の Rectangle クラスを作成しました。これを (SFML グラフィック ライブラリ用に) 渡す関数は、独自の RectangleShape オブジェクトを使用します。したがって、Rectangle を RectangleShape に変換する必要があります。
これを行うための関数を作りに行ったのですが、どのオブジェクトが作成され、誰がコピーされ、何が最も速いかについて混乱しました。状況は次のとおりです。
RectangleShape MyClass::ConvertRectangleToRectangleShape(const Rectangle& inRectangle)
{
Vector2f size(inRectangle.GetWidth(), inRectangle.GetHeight());
RectangleShape convertedRectangle(size);
Vector2f position(inRectangle.GetPosition.GetX(), inRectangle.GetPosition.GetY());
returnShape.SetPosition(position);
return convertedRectangle;
}
void MyClass::DrawShape(const Rectangle& inRectangle)
{
// Convert the shape
RectangleShape convertedShape = ConvertRectangleToRectangleShape(inRectangle);
// Rest of code here
}
ご覧のとおり、私のオブジェクトはどれもポインターとして入ってきません。だから私はそれに対処する必要はありません。
返されるオブジェクトはスタックにありますが、参照ではありません。返却するとコピーされますよね?その行
return convertedRectangle;
2番目の関数で作成した変数に長方形の形状をコピーします
RectangleShape convertedShape = ConvertRectangleToRectangleShape(inRectangle);
右?
関数のスコープを離れると割り当てが解除されるため、参照変数として返すことはできませんよね?
RectangleShape& MyClass::ConvertRectangleToRectangleShape(const Rectangle& inRectangle)
参照として返すことができず、コピーが必要ない場合は、コードを関数に貼り付ける必要がありますか? それとも#define? ここで正しい方法は何ですか、またはどこが間違っていますか? ありがとう!