考虑以下类:
- 项目符号类
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/