Vehicle load
Check the below code
#include<iostream>
class Vehicle {
public:
Vehicle();
void setNext(Vehicle* next);
virtual void load();
protected:
Vehicle* next_;
};
class Pickup : public Vehicle {
public:
void load() override;
};
class SUV : public Vehicle {
public:
// void load() override;
};
class Car : public Vehicle {
public:
// void load() override;
};
Vehicle::Vehicle(): next_(NULL) {}
void Vehicle::setNext(Vehicle* next) {
next_ = next;
}
void Vehicle::load()
{
std::cout << "Vehicle finding next one to load" << std::endl;
return next_->load();
}
void Pickup::load()
{
std::cout << "Pickup load" << std::endl;
return;
}
int main() {
Vehicle* v1 = new Car();
Vehicle* v2 = new SUV();
Vehicle* v3 = new Pickup();
v1->setNext(v2);
v2->setNext(v3);
v1->load();
}
The output is
Vehicle finding next one to load
Vehicle finding next one to load
Pickup load