我来自 c# 的世界,正在做这样的事情是允许的。当我在 c++ 中尝试它时,我没有得到任何编译器错误,但我不相信它确实有效。
因此,对于更有经验的人,您是否可以这样做:
Entity->SetPosition(Vector2(200, 400));
因为在 Vector2 中是一个类,设置位置的参数需要一个向量?这是允许的还是我需要像这样预初始化变量:
Vector2 aVector(200, 400);
Entity->SetPosition(aVector);
谢谢大卫
Entity->SetPosition(Vector2(200, 400));
如果您定义为以下之一,则很好(并且更可取) :SetPosition
void SetPosition(Vector2 const & v); //Okay : const reference
void SetPosition(Vector2 v); //okay : value
也就是说,SetPosition接受参数作为const 参考,或者简单地作为值。
这虽然行不通:
void SetPosition(Vector2 & v); //not okay : non-const reference
--
在 C++11 中,您可以只写这个(前提是您已经实现Vector2了启用此行为):
Entity->SetPosition({200, 400});
感谢@Simon 指出这一点。
一般来说,是的,这很好。通常,C++ 中的 Set 样式 API 将采用一个值或 aconst &来设置正在设置的值。在这两种情况下,都可以使用内联表达式。
class Entity {
public:
void SetPosition(const Vector2& value) { ... }
void SetPosition(Vector2 value) { ... }
};
SetPosition尽管在仅作为参考的情况下,这是不合法的
void SetPosition(Vector2& value) { ... }
虽然这不是二传手的常用习语