这个问题以前可能已经回答过,但是搜索并使用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()

07-27 20:05