Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1458499
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: C/C++

2013-10-25 11:31:52

编译出错,未找到B的定义,在使用一个类时,必须找到类的定义,或者使用如下三种方法
1. 使用指针 B*b;
2. 使用引用B& b;
3. 类分成头文件,互相包含

  1. class A
  2. {
  3.   B b;
  4. }

  5. class B
  6. {
  7. }

  1. //a.h
  2. #ifndef A_H
  3. #define A_H
  4. #include "B.h"
  5. class A
  6. {
  7. public:
  8.     A(){}
  9.     A(B* pB):m_pB(pB) {}
  10.     void useB();
  11. private:
  12.     B* m_pB;
  13. };
  14. #endif

  15. //a.cc

  16. #include "A.h"
  17. void A::useB()
  18. {
  19. }

  20. //b.h
  21. #ifndef B_H
  22. #define B_H
  23. class A;
  24. class B
  25. {
  26. public:
  27.     B(A* pA):m_pA(pA) {}
  28.     void useA();
  29.     
  30. private:
  31.     A* m_pA;
  32. };
  33. #endif

  34. //b.cc
  35. #include "A.h"
  36. #include "B.h"
  37. void B::useA()
  38. {
  39.     //do something for m_pA
  40. }

  41. //main.cc
  42. #include "a.h"
  43. #include "b.h"

  44. int main()
  45. {
  46.     A *a = new A;
  47.     a->useB();

  48.     B *b = new B(a);
  49.     b->useA();
  50.     delete b;
  51.     delete a;
  52.     return 0;
  53. }


阅读(856) | 评论(0) | 转发(0) |
0

上一篇:EXEC族

下一篇:设计模式——观察者模式

给主人留下些什么吧!~~