IntRect SFML声明
Declaration of IntRect SFML
我正在 SFML
进行一个项目,我想使用 std::pair
在我的 sprite sheet 上设置一个矩形的位置。在我的 .hpp
我有这个属性。
sf::IntRect _size;
用于设置矩形的width, height, x, y
。
在我的 .cpp
文件中,我已经这样做了。
void Character::setCharacter(const std::string& texture_p, std::pair<float, float> rec, std::pair<float, float> recc)
{
_size = {rec.first, rec.second, recc.first, recc.second};
if (!_texture->loadFromFile(texture_p))
throw 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
该错误意味着您正在从 float 隐式转换为 int,这会导致精度损失。
将元素从 float 显式转换为 int:
_size = {
static_cast<int>(rec.first),
static_cast<int>(rec.second),
static_cast<int>(recc.first),
static_cast<int>(recc.second)
};
或者先把rec
和recc
改成std::pair<int, int>
。
我正在 SFML
进行一个项目,我想使用 std::pair
在我的 sprite sheet 上设置一个矩形的位置。在我的 .hpp
我有这个属性。
sf::IntRect _size;
用于设置矩形的width, height, x, y
。
在我的 .cpp
文件中,我已经这样做了。
void Character::setCharacter(const std::string& texture_p, std::pair<float, float> rec, std::pair<float, float> recc) { _size = {rec.first, rec.second, recc.first, recc.second}; if (!_texture->loadFromFile(texture_p)) throw 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
该错误意味着您正在从 float 隐式转换为 int,这会导致精度损失。
将元素从 float 显式转换为 int:
_size = {
static_cast<int>(rec.first),
static_cast<int>(rec.second),
static_cast<int>(recc.first),
static_cast<int>(recc.second)
};
或者先把rec
和recc
改成std::pair<int, int>
。