gpt4 book ai didi

c++ - 为什么函数有时不运行?

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:43 24 4
gpt4 key购买 nike

一些代码:

Menu.Handle_MouseOvers(MousePosition); //Runs function below

void Handle_MouseOvers(Vector2<int> &MousePositions) ///Runs function below
{
if (MenuButtons.size() > 0)
MenuButtons[0].CheckContains(MousePositions);
}

void CheckContains(Vector2<int> &MousePositions)
{
if (ButtonShape.GetShape() == "Rect" && ButtonShape.GetRect().Contains(MousePositions)) ///This doesn't run sometimes
{
MouseOver = true;
std::cout << "MouseOver is true" << std::endl;
}
else{
std::cout << "mouseOver is false" << std::endl;
MouseOver = false;
}
}

出于某种原因,ButtonShape.GetRect().Contains(MousePositions) 仅在大约 80% 的时间内运行。我在函数内部放置了一些 cout,当它失败时,它根本不运行该函数。我不明白为什么它在大多数时间都有效,哈哈。有人有什么想法吗?任何帮助将不胜感激。

将其添加为编辑;

bool Contains(Vector2<int> &MousePosition)
{
std::cout << MousePosition.x << " " << MousePosition.y << std::endl;
if (MousePosition.x >= x && MousePosition.x <= x + Width && MousePosition.y >= y && MousePosition.y <= y + Height)
return true;
else
return false;
}

最佳答案

一个原因可能是因为这是一个逻辑/ bool 表达式:

ButtonShape.GetShape() == "Rect" && ButtonShape.GetRect().Contains(MousePositions)

&& 是这样工作的:

  • 如果左边的表达式为假,那么它的计算结果为假而不计算右边的表达式
  • 如果左侧表达式的计算结果为真,则仅对第二个表达式进行计算
    • 现在,如果右侧表达式的计算结果为假,则结果为假
    • 否则,最终结果为真。

如果您在删除 GetShape 后进行测试,请确保每次都将 Shape 设置为 Rect


如果该函数仍未每次都运行,则可能是您每次都没有正确设置 MousePositions。根据您的函数代码,这将显示为函数未运行。

关于c++ - 为什么函数有时不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com