Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- using namespace std;
- class City
- {
- int _lat, _lon;
- std::string _name;
- public:
- City(std::string name, int latitude, int longitude)
- : _name(name),
- _lat(latitude),
- _lon(longitude)
- {
- }
- std::string getName() const {
- return _name;
- }
- std::pair<int,int> getCoords() const {
- return std::make_pair(_lat, _lon);
- }
- };
- class Wheel {
- int _r;
- public:
- Wheel(int radius) {
- if (radius <= 0) {
- throw new std::invalid_argument("radius");
- }
- _r = radius;
- }
- int getRadius() const { return _r; }
- };
- class Car; // Forward declaration
- class Driver {
- std::string _name;
- Car *_car;
- public:
- Driver(const std::string &name)
- : _name(name)
- {
- }
- // Конструктор копирования
- // Сгенерирован автоматически
- // Driver(const Driver &other)
- // : _name(other.name),
- // _car(other.car)
- // {
- // }
- void getIntoTheCar(Car *car) {
- _car = car;
- }
- void driveTo(City destination) {
- if (_car) {
- //...
- }
- }
- };
- class Car {
- Driver _driver;
- Wheel _wheels[4];
- public:
- Car(const std::string &driversName, int radiusLB, int radiusLF, int radiusRB, int radiusRF)
- : _driver(driversName),
- _wheels {radiusLB, radiusLF, radiusRB, radiusRF}
- {
- _driver->getIntoTheCar(this);
- }
- Car(Driver *driver, int radiusLB, int radiusLF, int radiusRB, int radiusRF)
- : _driver(driver), // default copy constructor called
- _wheels {radiusLB, radiusLF, radiusRB, radiusRF}
- {
- _driver->getIntoTheCar(this);
- }
- void moveTo(City city) {
- _driver.driveTo(city);
- }
- };
- int main() {
- const int STANDARD_WHEEL_SIZE = 15;
- const int RACING_FRONT_WHEELS = 12;
- const int RACING_BACK_WHEELS = 20;
- City vacationPlace("Nizhnie_Vasyki", 333, 345);
- City racingRing("Monaco", 124, 32);
- Driver im("Vasilii Pupkins");
- Car myCar(Im,
- STANDARD_WHEEL_SIZE,
- STANDARD_WHEEL_SIZE,
- STANDARD_WHEEL_SIZE,
- STANDARD_WHEEL_SIZE);
- myCar.moveTo(vacationPlace);
- Car f1("Michael Schumacher",
- RACING_FRONT_WHEELS,
- RACING_BACK_WHEELS,
- RACING_FRONT_WHEELS,
- RACING_BACK_WHEELS);
- f1.moveTo(racingRing);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement