我正在做一个游戏,我有一个叫做Man
的类和一个叫做Block
的类,他们都需要对方的代码,但它们都在单独的文件中。有没有办法“预定义”一个班级?像Objective-C的@class宏一样?C++:两个需要彼此的类
7
A
回答
5
它被称为循环依赖。在课堂上Two.h
class One;
class Two {
public:
One* oneRef;
};
,并在类One.h
class Two;
class One {
public:
Two* twoRef;
};
的 “一类;”和“二级”;指令分别分配一个类名“One”和“Two”;但他们没有定义超出名称的任何其他细节。因此,您可以创建指针类,但不能包括整个类,像这样:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
上面两个例子就不能编译的原因是因为当编译器知道有一类一,这不是” t知道可能包含哪些字段,方法或虚方法,因为只定义了名称,而不是实际的类定义。
11
是的。
class Man;
这将声明Man
为“不完整类型”。您可以声明它的指针或引用以及其他一些内容,但不能创建实例或访问它的成员。这不是一个完整的描述,你可以做什么,不能做一个不完整的类型,但这是一般的想法。
+1
需要注意的是,您可以继续并在以后包含完整类型并获得访问权限。您可以在标题中使用不完整的类型,然后将完整的标题定义包含在cpp中以利用它。 – 2010-07-06 20:41:17
相关问题
- 1. C++构造函数中需要彼此的两个类?
- 2. #include彼此的两个类的错误
- 3. 两个类包含彼此的成员
- 4. 使两个sql字段需要彼此更新之前更改
- 5. Unity C#使两个Sprites彼此移动
- 6. 两个类依赖于彼此
- 7. 两个div彼此相邻
- 8. 我需要两个彼此相邻的桌子,位于页面中心
- 9. 影响彼此的两个div的CSS
- 10. c#类订阅彼此的事件
- 11. 两个图像在彼此的顶部
- 12. 彼此相邻的两个纺纱器
- 13. 两个控件在彼此的下方
- 14. 我需要将这两个div彼此叠放,同时保持内容位置
- 15. 我有两个单位和每个单位需要彼此的功能类。我如何避免循环引用?
- 16. 为什么当两个类彼此分类时,intelliJ会冻结?
- 17. 画出两个彼此相交的圆,从那我需要找到使用c的相交点#
- 18. Spark Streaming两个动作ned要彼此运行
- 19. 两个类别使用彼此的常量
- 20. 正下方使两个头彼此
- 21. 将两个div彼此堆叠
- 22. 让两个容器连接到彼此
- 23. 如何让两个div低于彼此
- 24. 引用两个模型彼此
- 25. 将两个div彼此对齐
- 26. 如何让两个表彼此相处?
- 27. 从两个XML依赖于彼此
- 28. 两个tableView函数彼此冲突
- 29. 两个TypeBuilders调用彼此非法?
- 30. 使这两个div彼此相邻
听起来像你想要的是一个前瞻性声明。 – mooware 2010-07-06 20:37:22
BlockDude +1。 – 2010-07-06 22:42:46