fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class GO{//game object
  5. public:
  6. static const int numRelation=10;
  7. GO* left[numRelation];
  8. GO* right[numRelation];
  9. public: GO(){
  10. for(int n=0;n<numRelation;n++){
  11. left[n]=nullptr;
  12. right[n]=nullptr;
  13. }
  14. }
  15. };
  16. class DB{//database
  17. int userIndex=-42;
  18. public: DB(){};
  19. public: DB(int us){userIndex=us;}
  20. public: GO* getLeft(GO* g){return g->left[userIndex];}
  21. public: void createRelation(GO* g1,GO* g2){
  22. g2->left[userIndex]=g1;
  23. g1->right[userIndex]=g2;
  24. }
  25. };
  26. class DBGenerator{//quite singleton
  27. int indexCounter=0;
  28. public: DB generate(){return DB(indexCounter++);}
  29. };
  30. //---^ library ^---
  31.  
  32. //---v user v----
  33. class CageManager{
  34.  
  35. DB dbHenFood;
  36. DB dbHenCage;
  37. public: CageManager(DBGenerator* gen){
  38. dbHenFood=gen->generate();
  39. dbHenCage=gen->generate();
  40. }
  41. };
  42. class FamilyManager{
  43. public: DB dbHenEgg;
  44. public: FamilyManager(DBGenerator* gen){
  45. dbHenEgg=gen->generate();
  46. }
  47. };
  48. int main() {
  49. DBGenerator commander;
  50. CageManager m1{&commander};
  51. FamilyManager m2{&commander};
  52. GO* hen=new GO();
  53. GO* egg=new GO();
  54. m2.dbHenEgg.createRelation(hen,egg);
  55. GO* henGet=m2.dbHenEgg.getLeft(egg);
  56. if(henGet==hen)std::cout<<"correct";
  57. if(henGet!=hen)std::cout<<"wrong";
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0s 15224KB
stdin
Standard input is empty
stdout
correct