不能使用SFML在结构体内部构造vector对象

Cannot construct Vector2f object inside struct using SFML

本文关键字:vector 对象 内部 结构体 SFML 不能      更新时间:2023-10-16

我在尝试这段代码时出现错误:

    #include <SFML/Window.hpp>
    #include <SFML/Graphics.hpp>
    const float ballVelocity = 8.f;
    struct Ball
    {
        Vector2f velocity(-ballVelocity, -ballVelocity);
    };

我正在使用SFML并通过教程进行操作,它应该可以工作,但Visual Studio在这一行中说:

Vector2f velocity(-ballVelocity, -ballVelocity);

期望一个类型说明符。

(编辑:要清楚我试图创建Vector2的对象)

如果您试图使用非静态数据成员初始化,则不能这样做。您需要使用大括号初始化,或者使用equal(=)初始化。这两个都可以:

struct Ball
{
    Vector2f velocity {-ballVelocity, -ballVelocity};
};

或:

struct Ball
{
    Vector2f velocity = Vector2f(-ballVelocity, -ballVelocity);
};

虽然,如果我没有弄错的话,SFML的组件存在于sf名称空间中,因此对Vector2f的任何引用实际上都需要限定为sf::Vector2f