フレンド関数

二つの異なる型のクラスが共通の特性を持っているとき、それを比較する。

#include < iostream >
using namespace std;

class truck;

class car {
    int passengers;
    int speed;
public:
    car(int p, int s){ passengers = p; speed = s; }
    friend int sp_greater(car c, truck t);
};

class truck {
    int weight;
    int speed;
public:
    truck(int w, int s){ weight = w, speed = s; }
    friend int sp_greater(car c, truck t);
};

int sp_greater(car c, truck t)
{
    return c.speed - t.speed;
}

int main()
{
    int t;
    car c1(6, 55), c2(2, 120);
    truck t1(10000, 55), t2(20000, 72);
    
    cout << "c1 and t1 compare:\n";
    t = sp_greater(c1, t1);
    if(t<0) cout << "truck is faster\n";
    else if(t==0) cout << "car and truck speed is same\n";
    else cout << "car is faster\n";
    
    cout << "\nc2 and t2 compare:\n";
    t = sp_greater(c2, t2);
    if(t<0) cout << "truck is faster\n";
    else if(t==0) cout << "car and truck speed is same\n";
    else cout << "car is faster\n";
    
    return 0;
}