c++ - 传递参数为 `const` 的奇怪效果

标签 c++ inheritance parameters sfml

考虑以下类:

  1. 项目符号类
    class Bullet : public sf::Drawable {
    public:
        Bullet(const sf::Vector2f& pos, const sf::Vector2f& dir, 
            const float& speed, const float& time, const float& life_time);
        ~Bullet();
        
        bool collides(const Wall &wall);
    private:
        ...
}

和 Wall 类

    class Wall : public sf::Drawable {
    public:
        Wall(const sf::Vector2f & endpoint1, const sf::Vector2f& endpoint2);
        void sample();
        ~Wall();
    private:
          ...
}

出于某种我无法完全理解的原因,我无法为 wall 调用任何方法。 bool collides(const Wall &wall)的参数方法,当 const存在,例如如果我删除 const,一切都会正常工作。

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

有人可以澄清我应该调查什么来找出导致此问题的原因吗? 预先感谢您。

最佳答案

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

class Wall : public sf::Drawable {
public:
    void sample() const; // <---- you need this
};            

现在就看你了,要么将不改变状态的成员函数设为const,要么去掉collides参数的constness。

关于c++ - 传递参数为 `const` 的奇怪效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62693539/

相关文章:

c# - Parameters.Add(string, object) 和 Parameters.AddWithValue 之间的区别

javascript - 在 JS 中调用函数时省略/跳过具有默认值的参数

javascript - 如何以独立于平台的方式在 Qt WebChannel 中的 HTML/Javascript 和 C++ 之间进行通信?

c++ - 输出 varchar 的 SQLBindParameter

c++ - 对基本构造函数的 undefined reference

parameters - 如何在 Alamofire, swift 3 中将字典作为参数发送

c++ - 没有 cruft 的 C++ "in"运算符?

c++ - 当一次实现多个 COM 接口(interface)时,我如何向上转换为 IUnknown?

c++ - 在基类中返回抽象类型

c# - 实体类型的 EF 映射属性到具有 TPH 继承的多个表