#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.emplace_back("Kustpilen", 4, 90); v.emplace_back("X2000", 9, 200); v.emplace_back("Rocket 1829", 3, 48); v.emplace_back("Intercity", 7, 120); // Create a track segment. Segment s{"Mjölby-Tranås", 2}; for ( auto && t : v ) { // Try to add a new train ti 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; }