c++ - IntRect SFML 声明
问题描述
我正在处理一个项目,SFML
我想使用std::pair
. 在我的.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}; 如果 (!_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
解决方案
该错误意味着您正在从 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>
第一位。
推荐阅读
- excel - 如何使用 VBA 代码将 .csv 文件的前 5000 行读入 Excel
- python - 查找重复的 id 属性
- .htaccess - 我可以使用 .htaccess 规则使用通配符作为站点,然后重写特定页面吗?
- sql - 仅获取 SQL 中的最后“一批”值
- c# - C# Winforms如何从Datagridview获取文本到基于同一行上另一个单元格的标签?
- c# - .NET SqlCommand.AddWithValue() 的奇怪日期时间格式问题
- python - 使用循环内不同函数的子图创建图形
- mysql - 在 myPhpAdmin 中设置外键
- reactjs - NextJS 图片组件的 PropTypes
- javascript - Simplify switch statement