#include #include #include #include "Segment.h" // both classes Segment and Train #include "Segment.h" // intended for testing of include guard using namespace std; int main() { vector v{}; // Create some trains with name, wagon count and top speed. v.push_back(Train{"Kustpilen", 4, 90}); v.push_back(Train{"X2000", 9, 200}); v.push_back(Train{"Rocket 1829", 3, 48}); v.push_back(Train{"Intercity", 7, 120}); // Create a track segment. Segment s {"Mjölby-Tranås", 2}; for ( Train const& t : v ) { // Try to add a new train to the track while ( ! s.add(t) ) { // If the track is full, wait until enough trains leaves the track cout << s.pop().get_name() << " must leave segment " << s.get_name() << " before " << t.get_name() << " can enter" << endl; } cout << t.get_name() << " enters segment " << s.get_name() << endl; int segment_speed { s.max_speed() }; // Indicate if the just added train must run at reduced speed due // to slower trains ahead. if ( segment_speed < t.max_speed() ) { cout << t.get_name() << " throttled to max " << segment_speed << " km/h" << endl; } } return 0; }