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() override;
  30. };
  31.  
  32. class Counter {
  33. int totalPassengers;
  34. public:
  35. Counter();
  36. void add(Vehicle* b);
  37. int total();
  38. };
  39.  
  40. }
  41.  
  42.  
  43.  
  44. using namespace oss;
  45.  
  46. Vehicle::~Vehicle(){};
  47.  
  48. Land_vehicle::Land_vehicle(){typeOfVehicle = "Land";}
  49. string Land_vehicle::type(){return typeOfVehicle;}
  50.  
  51. Bike::Bike(){numberOfPassengers = 1;}
  52. unsigned Bike::passengers(){return numberOfPassengers;}
  53.  
  54. Counter::Counter(){totalPassengers = 0;}
  55.  
  56. void Counter::add(Vehicle* b){
  57. totalPassengers += b->passengers();
  58. }
  59. int Counter::total(){return totalPassengers;}
  60.  
  61.  
  62. int main() {
  63. Counter c;
  64. Vehicle* v[] = {new Bike};
  65.  
  66. size_t sz = sizeof v/sizeof v[0];
  67. for (unsigned i = 0; i < sz; ++i) {
  68. c.add(v[i]);
  69. }
  70.  
  71. std::cout << "Total: " << c.total() << " passengers!" << std::endl;
  72.  
  73. for (unsigned i = 0; i < sz; ++i)
  74. delete v[i];
  75.  
  76. return 0;
  77. }
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
Total: 1 passengers!