fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <memory>
  4. using namespace std;
  5.  
  6.  
  7. class A {
  8. public:
  9. virtual void show() { cout<<"A"<<endl; }
  10. virtual void collide(shared_ptr<A> a) { cout<<"collide A with "; a->show(); }
  11.  
  12. virtual ~A() {}
  13. };
  14.  
  15. class B : public A {
  16. public:
  17. void show() override { cout<<"B"<<endl; }
  18. void collide(shared_ptr<A> a) override { cout<<"collide B with "; a->show(); }
  19. };
  20.  
  21. class C : public A {
  22. public:
  23. void show() override { cout<<"C"<<endl; }
  24. void collide(shared_ptr<A> a) override { cout<<"collide C with "; a->show(); }
  25. };
  26.  
  27. //bool C::CheckCollision(shared_ptr<B> box);
  28. //bool B::CheckCollision(shared_ptr<C> triangle);
  29.  
  30.  
  31.  
  32.  
  33. int main() {
  34. vector<shared_ptr<A>> objects;
  35. objects.push_back (make_shared<A>());
  36. objects.push_back (make_shared<B>());
  37. objects.push_back (make_shared<C>());
  38. for (int i = 0; i < objects.size(); i++)
  39. {
  40. objects[i]->show();
  41. for (int j=i; j < objects.size(); j++)
  42. {
  43. objects[i]->collide(objects[j]);
  44. //objects[i].CheckCollision(objects[j]);
  45. }
  46.  
  47. }
  48. return 0;
  49. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
A
collide A with A
collide A with B
collide A with C
B
collide B with B
collide B with C
C
collide C with C