覆盖另一个项目中的基类的函数(LNK2001)

时间:2018-11-23 10:25:15

标签: c++ visual-studio visual-c++ project solution

我目前正在尝试覆盖在WorldObject类中定义的纯虚函数。这个WorldObject类基于另一个项目(称为SFMLPro),但仍在相同的解决方案中。

当我尝试在另一个类中(也位于另一个项目中,但仍是相同的解决方案)覆盖此称为Update的虚拟函数时,出现以下链接错误:

“ main.obj:错误LNK2001:无法解析的外部符号“公共:虚拟void __cdecl Airplane :: Update(void)”(?Update @ Airplane @@ UEAAXXZ)”

我来自基类的Header文件如下所示:

namespace SFMLFrame {

class WorldObject {
public:
    WorldObject(SFMLFrame::World* worldptr, std::string spriteName);
    ~WorldObject();

    virtual void Update() = 0;

    /*Return the DrawComponent of the WorldObject*/
    inline SFMLFrame::DrawComponent* GetDrawComponent() { return p_DrawComponent; }
    /*Return the TransfromComponent of the WorldObject*/
    inline SFMLFrame::TransformComponent* GetTransformComponent() { return p_TransformComponent; }
    /*Returns the world where the WorldObject is in*/
    inline SFMLFrame::World* GetWorld() { return p_World; }

protected:
    //The world where the object is in
    SFMLFrame::World* p_World = nullptr;

private:
    void RegisterToWorld();

    /*The DrawComponent of the WorldObject*/
    SFMLFrame::DrawComponent* p_DrawComponent = nullptr;
    /*The TransformComponent of the WorldObject*/
    SFMLFrame::TransformComponent* p_TransformComponent = nullptr;

};

}

我尝试覆盖该函数的类的头文件如下:

    class Airplane : public SFMLFrame::WorldObject
{
public:
    Airplane(SFMLFrame::World* world, std::string spriteName) : SFMLFrame::WorldObject::WorldObject(world, spriteName) {}
    ~Airplane() {}

    virtual void Update() override;

protected:

};

我已经在名为Airplane.cpp的以下cpp文件中声明了该功能

void Airplane::Update()

{ }

有人可以告诉我此过程中导致链接错误的原因吗?

汤姆

0 个答案:

没有答案