Как сделать дружественные функции в классе?
Создайте класс инкапсулирующий автомобиль определенной модели 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;
}
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
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; }
};