Advertisement
Redee

Двунапралвенная связь через публичные методы Ядра

May 30th, 2016
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. ////////
  5. // Двунапралвенная связь через публичные методы Ядра
  6. // задача - запуск метода ядра через Компонет, где метод ядра использует Другой компонент
  7. ////
  8. struct CCore_Base
  9. {
  10.     virtual void getNum_Iv() = 0;
  11.     virtual void getNum_Ren() = 0;
  12. };
  13.  
  14. struct CComponent
  15. {
  16.     CCore_Base* ptr_Core;
  17.  
  18.     void set_Core(CCore_Base* ptCr)
  19.     {
  20.         ptr_Core = ptCr;
  21.     };
  22.  
  23. };
  24.  
  25. struct CIvent : CComponent
  26. {
  27.     int num;
  28.     CIvent(){ num = 5; }
  29. };
  30.  
  31. struct CRender : CComponent
  32. {
  33.     int num;
  34.     CRender(){ num = 9; }
  35. };
  36.  
  37. struct CCore : CCore_Base
  38. {
  39.     CIvent cIv;
  40.     CRender cRn;
  41.  
  42.     CCore()
  43.     {
  44.         cIv.set_Core( (CCore_Base*)this );
  45.         cRn.set_Core( (CCore_Base*)this );
  46.     }
  47.  
  48.     void getNum_Iv()
  49.     {
  50.         cout << "Number CIvent: " << cIv.num << endl;
  51.     }
  52.  
  53.     void getNum_Ren()
  54.     {
  55.         cout << "Number CRender: " << cRn.num << endl;
  56.     }
  57. };
  58.  
  59. void main()
  60. {
  61.     CCore cr;
  62.     CIvent* ptCiv = & cr.cIv;
  63.     CRender* ptCren = & cr.cRn;
  64.  
  65.     cout << "Get CRender number from CIvent" << endl;
  66.     ptCiv->ptr_Core->getNum_Ren();
  67.     cout << endl;
  68.     cout << "Get CIvent number from CRender" << endl;
  69.     ptCren->ptr_Core->getNum_Iv();
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement