抽象类在派生类中的实现

Abstract class Implementation in derived classes

本文关键字:实现 派生 抽象类      更新时间:2023-10-16

让我从描述我的问题的片段开始。

class MovableObject : protected BaseObject
{
    protected:
        virtual void move() = 0;
};
class Player : public MovableOject {}
void Player::move() {}

当我试图编译上面的代码时,我收到一个错误,说在Player类中没有move的定义。只有在类声明中包含move方法的声明后,我才能成功编译文件。我希望我的子类具有所需的声明,但显然我必须再次声明它们。有人能解释我的原因吗?

在尝试在类外定义函数之前,必须提供函数声明。

class Player : public MovableObject
{
    void move() override;    
};