所以,我正在尝试从另一个类继承一个类。 我有基类Entity,我有一个需要从它继承的Hero类。
像往常一样,我这样做:
#include "Entity.h"
class Hero : public Entity
{
public:
Hero(Sprite* sprite_, Scene* scene, float xPosition, float yPosition, const char* name);
~Hero(void);
};
我的实体类:
#include "Sprite.h"
#include <vector>
#include "Scene.h"
class Entity
{
public:
Entity(void);
Entity(Sprite* Sprite_);
Entity(Sprite* Sprite_, Scene* scene, float xPosition, float yPosition, const char*);
~Entity(void);
}
我得到的是:
1>Hero.obj : error LNK2019: unresolved external symbol "public: __thiscall Entity::Entity(void)" (??0Entity@@QAE@XZ) referenced in function "public: __thiscall Hero::Hero(class Sprite *,class Scene *,float,float,char const *)" (??0Hero@@QAE@PAVSprite@@PAVScene@@MMPBD@Z)
有谁能告诉我这里我做错了什么?
答案 0 :(得分:2)
从错误消息中,您已经声明了未定义的Entity::Entity(void);
您可能忘记在编译/链接时将文件包含在其中。
编辑:除了样式之外的一个小问题:在C ++中,您通常希望使用类似:Entity()
而不是Entity(void)
的内容。在C中,void
是一个函数原型,它告诉编译器关于(缺少)参数,而不是只告诉编译器返回类型的函数声明。但是,C ++没有任何与C函数声明等效的东西; C ++函数声明总是包含有关参数类型的信息,因此空括号告诉编译器该函数不带参数。
答案 1 :(得分:0)
您错过了Entity::Entity(void);
答案 2 :(得分:0)
该错误意味着它无法将声明链接到实际的函数实现。
这通常意味着你没有实现它,或者你实现了你认为的东西,但实际上签名略有不同。