Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5833431
  • 博文数量: 671
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 7310
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-14 09:56
文章分类

全部博文(671)

文章存档

2011年(1)

2010年(2)

2009年(24)

2008年(271)

2007年(319)

2006年(54)

我的朋友

分类: C/C++

2007-05-14 15:11:30

   最近在做一个定时关机的程序,结果涉及的两个类的头文件互相包含的问题,在网上狂搜了几个小时也没解决。多亏了qq群里的一个朋友帮忙,方才解决,不然真会郁闷的睡不着觉呀,几天的辛苦也白费了。在此一并向qq群的朋友致谢。
   现在我总结一下问题的解决过程和方法:
 
  方法一:利用友元类
 
我一共有两个类,由于要在两个类的头文件里互相应用对方,所以,在每一个类的头文件里面现包含另一个类的头文件,然后在该类的定义中声明另一个类为友元类。如下:
   #include "B.h"
 
   class CA: public CDialog
   {
       friend class CB;
       public:
        CB* m_b;  //注意一定要是指针类型
   }
 
在另一个类中可以这样声明:
 
   #include "A.h"
   class CB: public CDialog
   {
      friend class CA;

      public:
        CA * m_a;   //注意一定要是指针类型
   }
  
最后关键的是在每一个类的构造函数里 new 一个对方的类出来就ok了!
 
   方法二:
  
我一共有两个类,由于要在两个类的头文件里互相应用对方,所以,在每一个类的头文件里面现包含另一个类的头文件,然后在该类的定义中声明另一个类为友元类。如下:
   #include "B.h"
 
   class CA: public CDialog
   {
       friend class CB;
       public:
        CB* m_b;  //注意一定要是指针类型
   }
 
在另一个类中可以这样声明:
 
   class CA;
   class CB: public CDialog
   {
      public:
        CA * m_a;   //注意一定要是指针类型
   }
  
在cb.cpp文件中包含头文件
#include "ca.h"
 
最后关键的是在每一个类的构造函数里 new 一个对方的类出来就ok了!
阅读(2257) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~