最近在做一个定时关机的程序,结果涉及的两个类的头文件互相包含的问题,在网上狂搜了几个小时也没解决。多亏了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了!
阅读(2251) | 评论(1) | 转发(0) |