我目前正在尝试覆盖在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()
{ }
有人可以告诉我此过程中导致链接错误的原因吗?
汤姆