不知道参数 1 从 sf::Vector2i 到 const sf::Vector2i& 的转换<float>
No know conversion for argument 1 from sf::Vector2i to const sf::Vector2i<float>&
我正在尝试使用SFML库制作简单的按钮。当我把鼠标放在按钮上时,按钮应该会改变它的文本颜色。
void Button::updateColor(sf::Vector2i MousePos)
{
if(sprite.getGlobalBounds().contains(MousePos)) //here is the problem
text.setColor(color_covered);
else
text.setColor(color_uncovered);
}
.contains()函数期望
const vector2<T>&
准确的错误是:
no known conversion for argument 1 from 'sf::Vector2i {aka sf::Vector2<int>}' to 'const sf::Vector2<float>&'
I have try to change
void Button::updateColor(sf::Vector2i MousePos)
void Button::updateColor(const sf::Vector2i& MousePos)
这消除了constness的问题,但是我仍然不知道如何处理无效的引用。我不知道如何正确传递鼠标位置。
错误信息很清楚:您试图传递Vector2<int>
而不是预期的Vector2<float>
。
由于float
!= int
,这是行不通的。修改输入变量
假设变量sprite
是sf::Sprite
对象,则getGlobalBounds
函数返回的FloatRect
是sf::Rect<float>
的typedef
。这就是为什么contains
函数需要一个浮点向量。
为了解决这个问题,你需要一个浮点数向量
您可以编写一个函数将任意类型的Vector2
转换为另一种类型(例如:Vector2f
转换为Vector2i
,或Vector2u
转换为Vector2f
等)。
template <typename TO, typename FROM>
sf::Vector2<TO> toVector2(const sf::Vector2<FROM> &other)
{
return sf::Vector2<TO>(
static_cast<TO>(other.x),
static_cast<TO>(other.y));
}
然后,您可以将代码重写如下:
void Button::updateColor(sf::Vector2i MousePos)
{
if(sprite.getGlobalBounds().contains(toVector2<float>(MousePos))) // no more error
text.setColor(color_covered);
else
text.setColor(color_uncovered);
}
相关文章:
- 使用 sf::Text 数组时崩溃
- 尝试将 sf::Texture* 推送到 std::vector 时出错
- 为什么 sf::Text 显示点而不是数字?
- sf::文本不显示?
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- 如何将sf::RenderWindow传递给另一个函数
- 当我尝试绘制 sf::Text 对象时,SFML 中的分段错误
- 重载运算符时出错<在 sf::Vector 中
- 声明 sf::SoundBuffer 会导致程序在终止时崩溃
- 正在加载 sf::图片来自 QDialog
- SFML 中的分段错误 调用 sf::窗口::关闭后
- 未解决的外部符号sf ::带有SFML的时间
- crtdbg 在使用 sf::Text::setOutlineThickness 时转储内存泄漏
- sf::声音函数会导致链接器错误
- SFML sf::Mouse::getPosition 方法无法编写正确的参数
- SF :: Renderwindow的destrutor被检测到的堆叠粉碎
- 为什么我的SFML将SF ::纹理作为参数传递到函数时会不断崩溃
- SFML/C++ 闪烁命中效果 sf::精灵
- SFML 2.4.2 在绘制 sf::Text 对象之前获取本地边界
- 不知道参数 1 从 sf::Vector2i 到 const sf::Vector2i& 的转换<float>