逻辑运算符在调用的函数上导致编译时错误
Logical operator causing compile-time error on functions called
这个问题以前可能有人回答过,但是四处搜索和使用 google 并没有把我带到那里,所以我会问。
我目前正在制作游戏并处理碰撞,但是,出于某种原因,似乎每当我尝试编译时都会得到 ISO C++ forbids comparison between pointer and integer
起初我以为我的语法可能有问题,我检查了一下,但找不到任何东西,所以我就把这行代码留给了这个:
if((getMinX() > c->getMinX()) && (getMinX() < c-getMaxX()))
我尝试添加 this->
或添加括号,但这似乎不起作用,但是,只是做
if(this->getMinX() > c->getMinX())
似乎和
一样工作正常
if((5 > 3) && (5 < 10))
有没有我遗漏的东西?
两个对象都派生自 class 定义为 Collideable
class Collideable
{ public:
bool collidesWith(Collideable*);
virtual int getMinX() = 0;
virtual int getMaxX() = 0;
virtual int getMinY() = 0;
virtual int getMaxY() = 0;
};
所有 classes 都从虚方法中正确覆盖,导致问题的代码在 bool Collideable::collidesWith(Collideable* c)
中
根据 http://www.cplusplus.com/doc/tutorial/operators/ 逻辑运算符 return 一个布尔值(这对我来说很有意义,来自 Java)那么是什么导致了这个问题?
很难知道这是程序中的问题还是简单的转录问题:
第一行写成c-getMaxX()
;也许应该是 c->getMaxX()
?
您有 c-getMaxX()
,但您需要 c->getMaxX()
,还有 >
。
这个问题以前可能有人回答过,但是四处搜索和使用 google 并没有把我带到那里,所以我会问。
我目前正在制作游戏并处理碰撞,但是,出于某种原因,似乎每当我尝试编译时都会得到 ISO C++ forbids comparison between pointer and integer
起初我以为我的语法可能有问题,我检查了一下,但找不到任何东西,所以我就把这行代码留给了这个:
if((getMinX() > c->getMinX()) && (getMinX() < c-getMaxX()))
我尝试添加 this->
或添加括号,但这似乎不起作用,但是,只是做
if(this->getMinX() > c->getMinX())
似乎和
一样工作正常if((5 > 3) && (5 < 10))
有没有我遗漏的东西?
两个对象都派生自 class 定义为 Collideable
class Collideable
{ public:
bool collidesWith(Collideable*);
virtual int getMinX() = 0;
virtual int getMaxX() = 0;
virtual int getMinY() = 0;
virtual int getMaxY() = 0;
};
所有 classes 都从虚方法中正确覆盖,导致问题的代码在 bool Collideable::collidesWith(Collideable* c)
根据 http://www.cplusplus.com/doc/tutorial/operators/ 逻辑运算符 return 一个布尔值(这对我来说很有意义,来自 Java)那么是什么导致了这个问题?
很难知道这是程序中的问题还是简单的转录问题:
第一行写成c-getMaxX()
;也许应该是 c->getMaxX()
?
您有 c-getMaxX()
,但您需要 c->getMaxX()
,还有 >
。