// friend.cpp - Métodos de una clase amigos de otra
#include <iostream>
using namespace std;

/////////////////////////////////////////////////////////////////
class C1; // declaración adelantada de C1

class C2
{
  private:
    int nc2;
  public:
    void AsignarDato(int n) { nc2 = n; }
    int ObtenerDato(const C1&);
};

class C1
{
  friend int C2::ObtenerDato(const C1&);
  private:
    int nc1;
  public:
    void AsignarDato(int n) { nc1 = n; }
};

int C2::ObtenerDato(const C1& obj)
{
  return obj.nc1 + nc2;
}
/////////////////////////////////////////////////////////////////

int main()
{
  C1 objeto1; // objeto de la clase C1
  C2 objeto2; // objeto de la clase C2
  int dato;

  cout << "Nº entero: "; cin >> dato;
  objeto1.AsignarDato(dato);
  cout << "Nº entero: "; cin >> dato;
  objeto2.AsignarDato(dato);
  cout << "\nResultado: ";
  cout << objeto2.ObtenerDato(objeto1) << endl;
}

