【问题标题】:Declaration of IntRect SFMLIntRect SFML 声明
【发布时间】:2020-10-13 17:21:52
【问题描述】:

我正在SFML 开展一个项目,我想使用std::pair 在我的精灵表上设置一个矩形的位置。在我的.hpp 我有这个属性。 sf::IntRect _size; 用于设置矩形的width, height, x, y。 在我的.cppfile 中,我已经这样做了。

void Character::setCharacter(const std::string& texture_p, std::pair rec, std::pair recc)
{
    _size = {rec.first,rec.second,recc.first,recc.second};

    如果 (!_texture->loadFromFile(texture_p))
        抛出 CharacterError(ERR_TEXTURE, __FILE__, __LINE__);
    _sprite->setTexture(*_texture);
    _sprite->setTextureRect(_size);
}

但是在编译的过程中,出现了这个错误,不知道是什么意思。

Element '1': conversion from '_Ty1' requires a narrowing conversion
Element '2': conversion from '_Ty2' requires a narrowing conversion
Element '3': conversion from '_Ty1' requires a narrowing conversion
Element '4': conversion from '_Ty2' requires a narrowing conversion

【问题讨论】:

    标签: c++ sfml


    【解决方案1】:

    该错误意味着您正在从 float 隐式转换为 int,这可能会导致精度损失。

    将元素从浮点数显式转换为整数:

    _size = {
        static_cast<int>(rec.first),
        static_cast<int>(rec.second),
        static_cast<int>(recc.first),
        static_cast<int>(recc.second)
    };
    

    或者首先将recrecc 更改为std::pair&lt;int, int&gt;

    【讨论】:

      猜你喜欢
      • 2018-03-05
      • 2020-12-07
      • 2013-03-05
      • 2015-03-20
      • 2015-05-17
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多