19 : m_engine(new
Engine(10.0)), m_body(new
Body()), m_owner(nullptr), m_wheels(std::array<
Wheel, 2>()), m_speed(0.0),
28 : m_engine(enginePtr), m_body(new
Body()), m_owner(nullptr), m_wheels(std::array<
Wheel, 2>()), m_speed(0.0),
35 : m_engine(enginePtr), m_body(new Body()), m_owner(ownerPtr), m_wheels(std::array<Wheel, 2>()), m_speed(0.0),
42 : m_engine(nullptr), m_body(new
Body(*ori.m_body)), m_owner(ori.m_owner), m_wheels(ori.m_wheels),
43 m_speed(ori.m_speed), m_direction(ori.m_direction)
52 : m_engine(std::move(ori.m_engine)), m_body(std::move(ori.m_body)), m_owner(ori.m_owner),
53 m_wheels(std::move(ori.m_wheels)), m_speed(ori.m_speed), m_direction(ori.m_direction)
56 ori.m_engine =
nullptr;
58 ori.m_wheels = array<Wheel, 2>();
59 ori.m_owner =
nullptr;
61 ori.m_direction = 0.0;
87 m_body = std::move(rhs.m_body);
93 rhs.m_engine =
nullptr;
95 rhs.m_wheels = array<Wheel, 2>();
96 rhs.m_owner =
nullptr;
98 rhs.m_direction = 0.0;
109 throw Exception(
"Motorcycle::startEngine> Motorcycle without engine cannot start !");
121 throw Exception(
"Motorcycle without engine cannot stop !");
135 throw Exception(
"Motorcycle without engine cannot accelerate !");
146 throw Exception(
"Motorcycle without engine cannot brake !");
177 throw Exception(
"Motorcycle without engine cannot run !");
std::shared_ptr< Engine > m_engine
Comprehensive include file for all tracer classes.
Simple Exception root class.
A really simple class for Wheel.
double getSpeed() const
Return current speed.
Implementation for exception.
Engine that provides motion.
Motorcycle with Engine and Owner.
std::unique_ptr< Body > m_body
Extremely simple Exception root class.
void stopEngine()
Stop the motorcycle engine.
A fairly simple class for Person.
void brake(double speed)
Brake until given speed.
void halt()
Brake to zero speed, keep engine running.
bool is_running() const
Indicates whether engine is running or not.
Header for the Motorcycle class.
std::shared_ptr< Engine > get_engine()
Returns pointer to the Engine (may be 0).
#define COMP_MISC_MEMBER_TRACER
Macro for tracking member scope.
void turn(double degrees)
Person const * get_owner() const
Returns pointer to the owner (may be 0).
Motorcycle & operator=(Motorcycle const &rhs)
Copy assignment.
void set_engine(std::shared_ptr< Engine > const &newEnginePtr)
Resets engine.
std::array< Wheel, 2 > m_wheels
void set_owner(Person *newOwnerPtr)
Resets owner.
void startEngine()
Start the motorcycle engine.
void accelerate(double speed)
Accelerate up to given speed.
Motorcycle()
Default constructor does not initialize association with engine and owner.