具有多个类、派生类的C++正向声明

C++ forward declarations with multiple classes, derived class

本文关键字:C++ 声明 派生      更新时间:2023-10-16

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

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){...};
};

我如何使用正向声明,以便tobj可以从World.h访问,就像obj一样,没有错误?我还在每节课的开头使用#pragma一次。我曾尝试将"class World"添加到TextObject.h,将"class TextObject"添加到World.h,但这些看似标准的过程都不起作用。有什么建议吗?

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

您的头包含导致循环依赖关系,您可以通过前向声明来避免这种依赖关系。