具有多个 classes 的 C++ 前向声明,派生 class

C++ forward declarations with multiple classes, derived class

目前我有 3 个 classes,设置如下:

World.h

include "WorldObject.h"
class WorldObject;
class TextObject; // when this is added, compiles fine, but tobj is incomplete when accessed 
//(world->tobj->function()).  if #include "TextObject.h" is added, numerous errors occur within TextObject.h
class World { 
public:
      WorldObject* wobj; // works fine
      TextObject* tobj; //trying to get this to be functional
};

WorldObject.h

#include "World.h"
class World;
class WorldObject {
public:
      WorldObject(World* world){...} // works fine, world can be accessed from world objects
};

TextObject.h

#include "WorldObject.h"
#include "World.h"
class TextObject : WorldObject {
public:
      TextObject(World* world) : WorldObject(w){...};
};

如何使用前向声明,以便可以从 World.h 访问 tobj,就像 obj 一样,没有错误?我还在每个 class 的开头使用了#pragma once。我试图将 "class World" 添加到 TextObject.h 并将 "class TextObject" 添加到 World.h,但是看似标准的程序中的 none 正在运行。有什么建议吗?

#include <WorldObject.h> 在您的 .cpp 文件中而不是 header 中,您可以从那里访问它。

您的 header 包含导致循环依赖,您可以通过前向声明避免这种情况。