我正在为学校做一个OOP项目,由于以下问题,我目前陷入困境:

假设A是我的基类,B继承自AC继承自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)) {

08-27 15:41