0

我正在写一个游戏,但我遇到了一个问题,导致“C++ unresolved externals”

** 我的课程:**

地形.h

Class Terrain
{};

物理对象.h

Class PhysicsObject
{};

物理.h

#include PhysicsObject
Class Physics : public PhysicsObject
{
public:
    Physics();
    void add(PhysicsObject* o);
    void remove(PhysicsObject* o);
};

渲染对象.h

Class RenderObject
{};

渲染.h

#include RenderObject.h
Class Render: public RenderObject
{
public:
Render();
void add(RenderObject* o);
void remove(RenderObject* o);
};

像素.h

#include "PhysicsObject.h"
#include "RenderObject.h"

class pixel : public RenderObject, public PhysicsObject
{};

主文件

 #include "Physics.h"
 #include "Render.h"
 #include "Terrain.h"
 #include "Pixel.h"

void main()
{
    Physics* physics
    Render* render
    Terrain* terrain

    Pixel* pixel1 = new Pixel()

    renderer->add(pixel1);
    physics->add(pixel1);
}

我的 main 中有一个方法,它将创建像素并将它们存储在渲染和物理内部的向量中。我的问题是我需要访问像素内部的物理、地形和渲染,以便我的像素可以自己处理它们的碰撞和破坏,并将自己从渲染和物理向量中移除。

当我将指针传递给 Pixel 类时,我有什么想法可以实现这一点,因为当我尝试这样做时,我得到了 C++ 未解析的外部。有些类可能在编译器创建之前就被调用了,但我不知道如何解决这个问题。

4

2 回答 2

1

“未解决的外部”是一个LINK TIME错误。通常,您所要做的就是确保在构建 .exe 之前已编译所有源代码并包含所有库。

例如,如果您使用 MSVC++,请确保您的项目包含 terrain.cpp、PhysicsObject.cpp 等。这同样适用于您用于构建项目的任何其他 IDE 或 Makefile。

于 2014-02-02T23:27:39.750 回答
0

“未解析的外部”也可以看作是编译器已经看到了声明,但没有看到定义。这意味着它找不到您的 .cpp 文件。

他们是否属于另一个项目,而您已经建立了一个新项目?如果是这样,请将它们从文件资源管理器拖放到 VS 中的源“文件夹”。您可以单击一个文件并在 VS btw 的属性中查看它的相对路径。

于 2014-02-02T23:44:21.257 回答