私はC++で次のファイルを持っています:
Object.h:
class Object{
public:
Object(void);
~Object(void);
GLfloat getLeft();
GLfloat getRight();
GLfloat getBottom();
GLfloat getTop();
};
Player.h:
class Player : public Object{
public:
Player(void);
~Player(void);
GLfloat getLeft();
GLfloat getRight();
GLfloat getBottom();
GLfloat getTop();
};
Platform.h:
class Platform : public Object{
public:
Platform(void);
~Platform(void);
GLfloat getLeft();
GLfloat getRight();
GLfloat getBottom();
GLfloat getTop();
};
ピラー.h:
class Pillar : public Object{
public:
Pillar(void);
~Pillar(void);
GLfloat getLeft();
GLfloat getRight();
GLfloat getBottom();
GLfloat getTop();
};
Collision.h:
#include "Player.h"
#include "Platform.h"
#include "Pillar.h"
class Collision
{
public:
Collision(void);
~Collision(void);
bool CollisionDetect(Object* obj1, Object* obj2);
};
衝突.cpp:
bool Collision::CollisionDetect(Object* obj1, Object* obj2){
return !(obj2->getLeft() > obj1->getRight()
|| obj2->getRight() < obj1->getLeft()
|| obj2->getTop() > obj1->getBottom()
|| obj2->getBottom() < obj1->getTop());
}
CollisionDetect は、2 つの異なるオブジェクトが衝突したかどうかを比較します。これを行うには、特定の x 値と y 値が必要ですが、オブジェクトの種類は状況によって異なる場合があり、オブジェクトの種類ごとに x 値と y 値を見つける方法が異なります。 . これは、関連する get メソッドをサブクラスで再定義する必要があったことを意味しますが、このコードを実行するとエラーが発生します。
1>Collision.obj : error LNK2019: unresolved external symbol "public: float __thiscall Object::getLeft(void)" (?getLeft@Object@@QAEMXZ) referenced in function "public: bool __thiscall Collision::CollisionDetect(class Object *,class Object *)" (?CollisionDetect@Collision@@QAE_NPAVObject@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: float __thiscall Object::getRight(void)" (?getRight@Object@@QAEMXZ) referenced in function "public: bool __thiscall Collision::CollisionDetect(class Object *,class Object *)" (?CollisionDetect@Collision@@QAE_NPAVObject@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: float __thiscall Object::getBottom(void)" (?getBottom@Object@@QAEMXZ) referenced in function "public: bool __thiscall Collision::CollisionDetect(class Object *,class Object *)" (?CollisionDetect@Collision@@QAE_NPAVObject@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: float __thiscall Object::getTop(void)" (?getTop@Object@@QAEMXZ) referenced in function "public: bool __thiscall Collision::CollisionDetect(class Object *,class Object *)" (?CollisionDetect@Collision@@QAE_NPAVObject@@0@Z)
1>C:\Users\Student\Dropbox\Work\Year 2\Graphics 1\Coursework\GraphicsCoursework\Debug\GraphicsCoursework.exe : fatal error LNK1120: 4 unresolved externals
これを引き起こしているのは私の継承の問題ですか、それとも他の何かですか?