You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SFML创建Vector2f类型数组?返回值异常问题求助

解决SFML中Vector2f多值返回的问题

你的代码问题出在return s,f;这一行——这是C++的逗号表达式,它会依次执行s和f两个表达式,但最终只返回最后一个表达式的值,也就是f。所以你调用这个函数时,根本拿不到s的值,得到的s是默认初始化的(0,0),只有f是函数返回的正确值。

下面是几种正确返回多个Vector2f的方案:

方案1:用std::array返回固定数量的Vector2f

如果需要返回固定个数的Vector2f,std::array是最直接的选择:

#include <array>
#include <SFML/System/Vector2.hpp>

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

调用方式:

auto result = apple();
sf::Vector2f s = result[0]; // s的值为(2,4)
sf::Vector2f f = result[1]; // f的值为(2,4)

方案2:用std::pair返回两个Vector2f

如果只需要返回两个值,std::pair更轻量化:

#include <utility>
#include <SFML/System/Vector2.hpp>

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

调用方式(C++17及以上支持结构化绑定):

auto [s, f] = apple(); // 直接解构出s和f

老版本C++可以这么写:

auto result = apple();
sf::Vector2f s = result.first;
sf::Vector2f f = result.second;

方案3:通过引用参数修改外部变量

如果不想返回容器/配对,也可以把变量作为引用传入函数,直接修改:

#include <SFML/System/Vector2.hpp>

void apple(sf::Vector2f& s, sf::Vector2f& f)
{
    s = sf::Vector2f(2,4);
    f = sf::Vector2f(2,4);
}

调用方式:

sf::Vector2f s, f;
apple(s, f); // 执行后s和f的值都为(2,4)

内容的提问来源于stack exchange,提问作者user18504606

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:35:00