Как сделать дружественные функции в классе?

Рейтинг: -3Ответов: 1Опубликовано: 25.01.2023

Создайте класс инкапсулирующий автомобиль определенной модели c закрытым данным Состояние автомобиля, у которого есть дружественная функция Поездка, ухудшающая Состояние, есть дружественная операция >, сравнивающая два авто по Состоянию, и дружественный класс Автослесарь, который может улучшить(восстановить) Состояние, статическое поле Модель_авто, статический метод , возвращающий название модели, вложенный класс Двигатель. Вот код, помогите его переделать под условие задания:

#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

class Vehicle
{
private:
    string modelcar;
    int condition;
public:
    Vehicle(int condition)
    {
        this->condition = condition;
    };
    void print()
    {
        cout << "Состояние - " << condition << endl;
    }
    friend void Trip(Vehicle&);
};
void Trip(Vehicle& obj)
{
    obj.condition--;
}
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Vehicle obj(100);
    obj.print();
    Trip(obj);
    obj.print();
    return 0;
}

Ответы

▲ 0Принят
class CarEngine
{
public:
    int condition = 0;
};

class Vehicle
{
private:
    int condition;
    CarEngine engine;
    static string modelcar;
    
public:
    
    Vehicle(int cond) : condition(cond) {};
    static const string& GetModel(void) { return modelcar; }
    void print()
    {
        cout << "Состояние - " << condition << endl;
    }
    friend void Trip(Vehicle& obj) { obj.condition--; }
    friend bool operator>(const Vehicle& a, const Vehicle& b) { return a.condition > b.condition; }
    friend class CarMechanic;
};

string Vehicle::modelcar = "VAZ2108";

class CarMechanic
{
public:
    void Restore(Vehicle& obj) { obj.condition+=10; }
};