我来自一个c#世界正在做这样的事情是允许的。当我在c ++中尝试时,我没有遇到编译错误,但我不相信它确实在工作。
所以对于经验丰富的人来说,你可以做这样的事情:
Entity->SetPosition(Vector2(200, 400));
因为在Vector2中是一个类,并且设置位置的参数需要一个向量?这是允许的还是我需要像这样预先初始化变量:
Vector2 aVector(200, 400);
Entity->SetPosition(aVector);
由于 大卫
答案 0 :(得分:8)
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
实现了enable this behavior):
Entity->SetPosition({200, 400});
感谢@Simon指出这一点。
答案 1 :(得分:1)
一般来说是的,这很好。通常,C ++中的Set样式API将对要设置的值采用值或const &
。在这两种情况下,都可以使用内联表达式。
class Entity {
public:
void SetPosition(const Vector2& value) { ... }
void SetPosition(Vector2 value) { ... }
};
虽然SetPosition
仅提供参考
void SetPosition(Vector2& value) { ... }
这不是setter的常用习惯用语