我正在为学校做一个OOP项目,由于以下问题,我目前陷入困境:
假设A
是我的基类,B
继承自A
,C
继承自B
。A
具有一种检查两个A型对象是否碰撞的方法。
此方法未在C
中重新定义/过度驱动,但我必须在此子类中使用它。
class A
{
public:
bool isColliding(A);
};
class B : public A
{
};
class C : public B
{
public:
void Eat(B);
}
void C::Eat(B objectB)
{
if(isColliding(objectB))
{
}
}
这是代码的过于简化,我只是想传达这个想法。
它返回以下内容:
error : no matching function for call to 'C::isColliding(B)'
note: candidate: bool A::isColliding(A)
note: no known conversion for argument 1 from 'B' to 'A'.
我如何获得这种方法将C和B解释为A才能起作用?
最佳答案
为了访问基类成员,您必须这样明确地说:
if(A::isColliding(objectB)) {