在 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;
它将矩形形状复制到我在第二个函数中创建的变量中
RectangleShape convertedShape = ConvertRectangleToRectangleShape(inRectangle);
对?
我不能将它作为参考变量返回,因为一旦我离开函数的范围,它就会被取消分配,对吧?
RectangleShape& MyClass::ConvertRectangleToRectangleShape(const Rectangle& inRectangle)
如果我不能将它作为参考返回,并且我不想要副本,我是否只需将代码粘贴到函数中?还是#define?这里的正确方法是什么,或者我错在哪里?谢谢!