繁体   English   中英

Arduino C++ Inheritance和function声明问题

[英]Arduino C++ Inheritance and function declaration problem

class Entity {
  public:
    virtual void applyCollisionBehaviorTo(Entity &entity) { }
    
    virtual void onCollision(Entity &entity) { }
};

class Ball : public Entity {
  public:
    void applyCollisionBehaviorTo(Entity entity) override {
      
    }

    void onCollision(Entity entity) override {
      entity.applyCollisionBehaviorTo(this); // error: no matching function for call to 'Entity::applyCollisionBehaviorTo(Ball*)'
    }
};

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

我来自 C# 背景,所以我开始关注 C++ inheritance 和多态性。

您的 class Entity应该是这样的:

class Entity
{
public:
    virtual void applyCollisionBehaviorTo(Entity &entity) = 0;    
    virtual void onCollision(Entity &collidingEntity) = 0;
};

您不能在Entity中引用Ball class 的 object ,实际上实体甚至不知道球的存在。
OTOH 球“知道”它们实体

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM