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非常感谢,完全忘记了。