无法隐式转换“布尔”到“廉政” - 碰撞检测(Cannot implicitly convert

2019-09-29 17:40发布

我试图做一个简单的碰撞检测类足球游戏。 下面是代码:

int Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)  
{  
    int dx = x2 - x1;  
    int dy = y2 - y1;  
    int radii = radius1 + radius2;  
    if ((dx*dy)+(dy*dy)< radii * radii)  
    {  
        return true;  
    }  
    else  
    {  
        return false;  
    }  
}  

问题是与代码返回true或false。 Visual Studio中说,它不能隐式转换BOOL为int,我理解,但我怎么能解决这个问题? 谢谢你的帮助。

Answer 1:

定义你这样的功能:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)

现在,您可以返回truefalse 。 如果你保持int ,那么你需要回到一个整数值,如01 ,但是这并不表示功能的意图。

你也可以缩短你的代码位:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)  
{  
    int dx = x2 - x1;  
    int dy = y2 - y1;  
    int radii = radius1 + radius2;  
    return ((dx * dy) + (dy * dy) < radii * radii);
}


Answer 2:

如果您需要返回真/假变量,您应该在第一行改成这样:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2) {


Answer 3:

不要忘记,以解决您的算法。 ((DX *** ** DY)+(DY * DY)<半径*半径)应该是:((DX *** ** DX)+(DY * DY)<半径*半径)

当你认为:呼! 我固定的INT /布尔东西,,你会得到一堆误报。



文章来源: Cannot implicitly convert 'bool' to 'int' - collision detection