C++ 将参数传递为`const'的奇怪效果`

C++ 将参数传递为`const'的奇怪效果`,c++,inheritance,parameters,sfml,C++,Inheritance,Parameters,Sfml,考虑以下类别: 子弹级 类项目符号:公共sf::可绘制{ 公众: 项目符号(常数sf::矢量2F和位置,常数sf::矢量2F和方向, 恒浮与速度、恒浮与时间、恒浮与寿命); ~Bullet(); 布尔碰撞(const Wall和Wall); 私人: ... } 和墙类 类墙:公共sf::可绘制{ 公众: 墙(常数sf::向量2F和端点1,常数sf::向量2F和端点2); 空样(); ~Wall(); 私人: ... } 由于某种原因,我不能完全理解,我不能调用bool collides(co

考虑以下类别:

  • 子弹级
  • 类项目符号:公共sf::可绘制{
    公众:
    项目符号(常数sf::矢量2F和位置,常数sf::矢量2F和方向,
    恒浮与速度、恒浮与时间、恒浮与寿命);
    ~Bullet();
    布尔碰撞(const Wall和Wall);
    私人:
    ...
    }
    
    和墙类

    类墙:公共sf::可绘制{
    公众:
    墙(常数sf::向量2F和端点1,常数sf::向量2F和端点2);
    空样();
    ~Wall();
    私人:
    ...
    }
    
    由于某种原因,我不能完全理解,我不能调用
    bool collides(const-wall&wall)
    方法的
    wall
    参数的任何方法,当
    const
    存在时,例如,如果我移除const,一切都正常

    我认为这可能与继承
    sf::Drawable
    有关,但我对SFML还没有那么丰富的经验

    有人能澄清一下我应该调查什么来找出造成这种情况的原因吗?
    提前谢谢。

    您不能调用
    常量
    对象上的非常量成员函数或对
    常量
    对象的引用,就这么简单

    class Wall : public sf::Drawable {
    public:
        void sample() const; // <---- you need this
    };            
    
    类墙:公共sf::可绘制{
    公众:
    
    void sample()const;//您只能对
    const
    对象调用
    const
    方法。如果
    碰撞
    不会更改
    项目符号
    的内部状态,您应该这样声明(并定义)它:
    bool碰撞(const Wall&Wall)const;
    我想某处有一个复制品,我会设法找到something@Yksisarvinen非常感谢,完全忘记了。