fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. using namespace std;
  6.  
  7. namespace oss{
  8.  
  9. class Vehicle
  10. {
  11. public:
  12. virtual string type() = 0;
  13. virtual unsigned passengers() = 0;
  14. virtual ~Vehicle();
  15. };
  16.  
  17. class Land_vehicle : public Vehicle{
  18. protected:
  19. string typeOfVehicle;
  20. unsigned numberOfPassengers;
  21. public:
  22. Land_vehicle();
  23. string type();
  24. };
  25.  
  26. class Bike : public Land_vehicle{
  27. public:
  28. Bike();
  29. unsigned passengers();
  30. };
  31.  
  32. class Counter {
  33. int totalPassengers;
  34. public:
  35. Counter();
  36. void add(Bike* b);
  37. // void add(Car* c);
  38. // void add(Catamaran* ca);
  39. // void add(Seaplane* s);
  40. // void add(Ferry* f);
  41. int total();
  42. };
  43.  
  44. }
  45.  
  46.  
  47.  
  48. using namespace oss;
  49.  
  50. Vehicle::~Vehicle(){};
  51.  
  52. Land_vehicle::Land_vehicle(){typeOfVehicle = "Land";}
  53. string Land_vehicle::type(){return typeOfVehicle;}
  54.  
  55. Bike::Bike(){numberOfPassengers = 1;}
  56. unsigned Bike::passengers(){return numberOfPassengers;}
  57.  
  58. Counter::Counter(){totalPassengers = 0;}
  59.  
  60. void Counter::add(Bike* b){
  61. cout <<"inside add bike"<<endl;
  62. totalPassengers += b->passengers();
  63. }
  64. //void Counter::add(Car c){totalPassengers += c.passengers();}
  65. //void Counter::add(Catamaran ca){totalPassengers += ca.passengers();}
  66. //void Counter::add(Seaplane s){totalPassengers += s.passengers();}
  67. //void Counter::add(Ferry f){totalPassengers += f.passengers();}
  68. int Counter::total(){return totalPassengers;}
  69.  
  70.  
  71. int main() {
  72. Counter c;
  73. Vehicle* v[] = {new Bike};
  74.  
  75. size_t sz = sizeof v/sizeof v[0];
  76. for (unsigned i = 0; i < sz; ++i) {
  77. if (dynamic_cast<Bike*>(v[i]))
  78. c.add(dynamic_cast<Bike*>(v[i]));
  79. }
  80.  
  81. std::cout << "Total: " << c.total() << " passengers!" << std::endl;
  82.  
  83. for (unsigned i = 0; i < sz; ++i)
  84. delete v[i];
  85.  
  86. return 0;
  87. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
inside add bike
Total: 1 passengers!