读书人

C++中两个种互相包含的策略

发布时间: 2012-09-17 12:06:51 作者: rapoo

C++中两个类互相包含的策略
C++中两个类互相包含的策略

一,问题描述

A类包含B类的实例,而B类也包含A类的实例

二,求解策略

1)错误的解法

A文件包含B,而B文件又包含A文件,这样就形成死循环

[html] view plaincopy
  1. #include "B.h"
  2. class A
  3. {
  4. int i;
  5. B b;
  6. };
  7. #include "A.h"
  8. class B
  9. {
  10. int i;
  11. A a;
  12. };


2)正确的写法以及注意事项

1)主函数只需要包含b.h 就可以,因为b.h中包含了a.h

2)a.h中不需要包含b.h,但要声明class b。在避免死循环的同时也成功引用了b

3)包含class b 而没有包含头文件 "b.h",这样只能声明 b类型的指针!!!!而不能实例化!!!!

a.h:

[html] view plaincopy
  1. #include <iostream>
  2. using namespace std;
  3. class b;
  4. class a
  5. {
  6. public:
  7. b *ib;
  8. void putA()
  9. {
  10. cout<<"这是A类"<<endl;
  11. }
  12. };


b.h:

[html] view plaincopy
  1. #include <iostream>
  2. #include "a.h"
  3. using namespace std;
  4. class b
  5. {
  6. public:
  7. a ia;
  8. void putB()
  9. {
  10. cout<<"这是B类"<<endl;
  11. }
  12. };


主函数

[html] view plaincopy
  1. #include <stdio.h>
  2. #include <tchar.h>
  3. #include "b.h"
  4. int _tmain(int argc, _TCHAR* argv[])
  5. {
  6. b B;
  7. B.putB();
  8. B.ia.putA();
  9. getchar();
  10. return 0;
  11. }
参考资料:http://blog.csdn.net/tianshuai11/article/details/7705321

读书人网 >C++

热点推荐