#include <iostream>

using namespace std;

const int IDLE=0;

const int INUSE=1;

class C2; // опережающее объявление

class C1 {

    int status; // IDLE если сообщение неактивно, INUSE если сообщение выведено на экран.

    // ...

public:

    void set_status(int state);

    friend int idle(C1 a, C2 b);

};

class C2 {

    int status; // IDLE если сообщение неактивно, INUSE если сообщение выведено на экран.

    // ...

public:

    void set_status(int state);

    friend int idle(C1 a, C2 b);

};

void C1::set_status(int state)

{

    status = state;

}

void C2::set_status(int state)

{

    status = state;

}

// Функция idle() - "друг" для классов C1 и C2.

int idle(C1 a, C2 b)

{

    if(a.status || b.status) return 0;

    else return 1;

}

int main()

{

    C1 x;

    C2 y;

    x.set_status(IDLE);

    y.set_status(IDLE);

    if(idle(x, y)) cout << "Экран свободен.\n";

    else cout << "Отображается сообщение.\n";

    x.set_status(INUSE);

    if(idle(x, y)) cout << "Экран свободен.\n";

    else cout << "Отображается сообщение.\n";

    return 0;

}