2012-11-08 24 views
0

我有三个类,类演员,类细胞,和类的行为。类Actor实例化行为的一个子类(在行为头文件中定义)。行为使用方法来分析指向Actor的指针向量以及指向单元的指针向量。单元格具有分析指向单元格的指针矢量的方法,并且它们包含指向Actors的指针向量。哦,是的,并且在Actor头文件中有一种枚举的标题数据类型,以某种方式被所有类使用。 (通过在每个包含Actor的文件中声明一个extern枚举标题数据类型)。三个互连对象C++

我已经得到了大部分的代码,打了一个棘手的问题时,我得到了有关包括和递归包括错误的一个巨大的名单,并已赶工,在这几个小时。我可以使用一些帮助来确定什么是安排这些对象的最佳方式,以便它们一起工作。

因此,再次重申:

Actor: Behavior 
Behavior: vector of pointers to Cells, vector of pointers to Actors 
Cells: vector of pinters to Cells, vector of pointers to Actors 
Heading: Enumerated, declared extern in all classes, currently stored in Actor. 

任何意见,以如何去包括哪些头文件在哪里?我已经尝试了不同的前置声明的很多很多的排列,包括,等我真的不知道现在在哪里去了。

谢谢!

编辑:更新我的类和头文件。

Actor: Move, Heading 
Move: Behavior Heading 
Behavior: Cell, Actor Heading 
Cell: Cell, Actor Heading 
Heading: Used by all. 

既然这样,这里有什么被包含:

Behavior.h: Forward declarations of Cell and Actor 
Behavior.cpp: Includes Behavior.h, Cell.h, Actor.h 
Cell.h: Forward Declaration of Actor 
Cell.cpp: includes Cell.h, Heading.h, Actor.h 
Actor.h: Includes Behavior.h, Heading.h. 
Actor.cpp: includes actor.h 
Move.h: Includes Behavior.h, Heading.h 
Move.cpp: Includes move.h, Heading.h, Cell.h, Actor.h 
Heading: Includes nothing, declares nothing. 

几乎是唯一有相关的错误,我看到的是移动中的Actor.h文件中的一个实例有一个不完整类型。

编辑#2:添加了包含行为和在actor.cpp中移动并将它们从actor.h中移除,并将我的实例化为创建一个指针,并对我进行了咳嗽和咆哮,但它已成功构建。谢谢你们的帮助!

+0

什么样的错误?你能向我们展示你的课程吗? – besworland

+0

您也可以转发声明枚举! – Skizz

+0

我不能不幸。我可以给你的要点,并说我的应用程序将形成一个Cell对象的世界,它继而保存Actor对象的向量和指向其邻居的向量向量(利用标题和其他单元格)。 Actor对象使用Behavior对象来创建Move对象以将其自身从Cell传输到Cell。 – valkn0t

回答

1

只要只能依赖是一个指针,只用一个前锋DECL。该规则只包含对actor.h包括behavior.h和heading.h

behavior.h - >声明细胞和演员
Cells.h - >宣布演员

行为和细胞CPP会必须包含forward声明类的头文件。

behavior.cpp - >包括Cells.h和Actors.h
Cells.cpp - >包括actors.h

+0

我喜欢你的解决方案,这很有道理,但我的编译器不会购买它。获取“在我的单元格中使用未定义类型'Actor'。cpp实现文件,并在我的cell.h文件中看到“Actor”的声明。我从那些开始....这是一个长长的错误列表。 – valkn0t

+0

你需要在cpps中包含头文件 –

+0

我在我的cell.cpp中包含了cell.h,在我的actor.cpp中包含了actor.h – valkn0t

0

为了缓解并发症,将前往自己的头。当然,由一名包括警卫来保护它。然后,使用ActorBehavior的前向声明Cells等。

+0

我更新了我原来的帖子,告诉了我如何使用你的答案,以及我得到了什么结果。 – valkn0t