免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1089 | 回复: 0
打印 上一主题 下一主题

如何将相互引用的类编译过去 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-15 16:51 |只看该作者 |倒序浏览
我原来遇到过这样的问题,我想对于学习c++的同学来说,这个问题是很长见和不知道该如何解决的:


  1. //test1.h
  2. class CTest1  
  3. {
  4. public:
  5.         CTest1();
  6.         virtual ~CTest1();
  7.         CTest2 mm;
  8. };

  9. //test2.h
  10. class CTest2  
  11. {
  12. public:
  13.         CTest2();
  14.         virtual ~CTest2();
  15.         CTest1 mm;
  16. };
复制代码

如何将它们编译过去了??类CTest2用到了CTest1,CTest1用到了CTest2。
不管你怎么做,你都是编译不过去的。为什么了?
在编译Test2.cpp的时候,因为CTest2中又CTest1的成员变量,那编译器就要得到CTest1的内存结构,那就要#include “Test1.h",但是相应的Test1.h要include ”Test2.h",这样就导致了.h的重复包含,那是不行的,那当如何做了。

当将mm的类型改为CTest1×(CTest2×),再在头文件中加入对于CTest1(CTest2×)的声明,class CTest1,因为改为了指针,指针都是4个字节,那编译器就能将内存结构确定下来,那就Ok了,可以编译过去了。

不知道这个东西对于大家又没有帮助,好久没有再c版发贴了,希望有用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP