我来自 c# 的世界,允许做这样的事情。当我在 C++ 中尝试它时,我没有得到编译器错误,但我不相信它真的有效。

所以对于更有经验的人,你可以做这样的事情:

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

因为在 Vector2 是一个类,并且设置位置的参数需要一个 vector ?这是允许的还是我需要像这样预初始化变量:
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 中,你可以只写这个(假设你已经实现了 Vector2enable this behavior ):
Entity->SetPosition({200, 400});

感谢@Simon 指出这一点。

关于c++在将变量传递给函数时声明变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11446386/

10-12 23:56