这个问题以前可能已经回答过,但是搜索并使用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))
有什么我想念的吗?
这两个对象都是从名为Collideable的类派生的,像这样定义
class Collideable
{ public:
bool collidesWith(Collideable*);
virtual int getMinX() = 0;
virtual int getMaxX() = 0;
virtual int getMinY() = 0;
virtual int getMaxY() = 0;
};
所有类均已从虚拟方法正确覆盖,导致问题的代码在
bool Collideable::collidesWith(Collideable* c)
中根据http://www.cplusplus.com/doc/tutorial/operators/,逻辑运算符返回一个布尔值(这对我来说很有意义,来自Java),那么是什么导致了这个问题呢?
最佳答案
很难知道这是程序中的内容还是简单的转录问题:
第一行以c-getMaxX()
结尾;也许应该是c->getMaxX()
?