关于相互依赖的类,如何不报错

前端之家收集整理的这篇文章主要介绍了关于相互依赖的类,如何不报错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
名词:
--
声明: class A ; 只声明而不在此处定义,告诉编译器有这个类型,那么你就可以使用这个类型了,但这个类型的使用是受限的(在定义之前的使用)
不完全类型:上面的类型就是不完全类型,该类型只能用来定义指向该类型的指针或则引用。


在创建类的对象之前,必须完整地定义该类,

同样在使用指针或者引用访问该类成员时,必须已经定义了类。


  1. #include<iostream>
  2. using namespace std;
  3. class B;//前向声明 ,为了在A中的函数列表中能使用B
  4. class A
  5. {
  6. public:
  7. A(){ m_a = 10;}
  8. void seta(B &b);//可以定义类的引用 ,但是不能在这里完整地定义该函数,因为B类只声明还没定义
  9. int geta(){return m_a;}
  10. private:
  11. int m_a;
  12. };
  13. class B
  14. {
  15. public:
  16. B(){ m_b = 20;}
  17. void setb(A&a);//这里也是一样
  18. int getb(){return m_b;}
  19. private:
  20. int m_b;
  21. };
  22. void A::seta(B &b)
  23. {
  24. m_a = b.getb();//B类已经定义了,所以可以使用指向该类的引用来访问该类成员
  25. }
  26. void B::setb(A &a)
  27. {
  28. m_b = a.geta();
  29. }
  30. int main()
  31. {
  32. A a;
  33. B b;
  34. }


参考书籍《C++ prime》

猜你在找的设计模式相关文章