今天在编写C++小程序的过程中遇到一个问题,假如说我们现在要实现一个邮件消息Message类和消息存放目录Folder类;
一个消息可以属于多个目录,而一个目录也可以包含多个消息。
实现的基本方法是Message类中有一个指向Folder类的指针集合,message对象属于集合中的每个folder,而Folder类中又有一个指向Message类的指针集合,该集合包含了这个目录下的所有message。这么说好像有点晕。。。
代码如下:
|
|
|
|
上面代码中的Message类声明和Folder类声明相互引用,如果我们在两个类中分别#include
另一个类,那么就会带来一个问题,编译器会发现头文件引用没有尽头,也就是说陷入了无限循环从而导致编译错误!
在网上查找相关资料后发现了一个比较好的解决方法,就是在Message或Folder类中声明另一个类,然后在类的定义中#include
相应的类声明头文件。
可能有些不太好理解,代码实现如下:
|
|
|
|
|
|
这样问题就完美解决了!