如何从 SFML 制作 Vector2f 数组?[复制]

How do I make an array of Vector2f from SFML? [duplicate]

提问人:user18504606 提问时间:10/22/2023 最后编辑:Remy Lebeauuser18504606 更新时间:10/22/2023 访问量:97

问:

我不知道如何用SFML制作数组。 它只部分起作用,它只对返回的最后一个变量起作用。Vector2f

Vector2f apple()
{
    Vector2f s(2,4);
    Vector2f f(2,4);
    return s,f;
};

s将等于并且是正常的。0,0f

C++ 数组 SFML

评论

1赞 Drew Dormann 10/22/2023
声明的返回类型 , 不是数组。Vector2f
1赞 JaMiT 10/22/2023
“它只适用于返回的最后一个变量”——这是什么意思?当所有变量都不是数组时,“work”是什么意思?我认为你的问题需要更多的文字来描述你的期望是什么,你认为你的代码是做什么的,以及你的代码实际做了什么。对于这类问题,一个有用的模式是:1)在高层次、抽象的层面上描述你要完成的任务。2) 专注于您的具体示例案例,并描述您希望该示例如何工作。3) 为您的示例案例证明了一个最小的可重复示例4)给出预期和实际的输出。
1赞 JaMiT 10/22/2023
s 将等于 0,0,f 将正常 -- 我看到的唯一变量初始化为 。如果你的意思是在调用 的函数中看到,那么该代码应该是最小可重现示例的一部分。s2,40,0apple()

答:

1赞 Erdit 10/22/2023 #1

在 C++ 中,您无法像此处尝试的那样从函数返回多个值:

return s,f;

您可以通过多种方式从函数返回多个对象:

标准::make_pair

你可以利用 std::make_pair 来返回两个 ',如下所示:Vector2f

std::pair<Vector2f, Vector2f> apple() {
    Vector2f s(2, 4);
    Vector2f f(2, 4);
    return std::make_pair(s, f);
}

现在,您可以通过执行以下操作来检索这两个值:

std::pair<Vector2f, Vector2f> result = apple();
Vector2f s = result.first;
Vector2f f = result.second;

标准::向量

您可以使用 std::vector(或 std::array)返回多个对象。

std::vector<Vector2f> apple() {
    Vector2f s(2, 4);
    Vector2f f(2, 4);
    return {s, f};
}

您可以执行以下操作来检索它们:

std::vector<Vector2f> result = apple();
Vector2f s = result[0];
Vector2f f = result[1];

您也可以使用输出参数来保存结果,但我相信上述两个参数对于您尝试执行的操作来说已经足够了。Vector2f

这篇文章还涵盖了您的问题:从 C++ 函数返回多个值