Asociacion en c++

Iniciado por gibranini, 21 Mayo 2014, 22:10 PM

0 Miembros y 1 Visitante están viendo este tema.

gibranini

Alguien sabe como asociar en c++ con clases o algun libro que me recomienden donde me explique y diga como hacerlo  :o

patilanz

Que te refieres con asocias clases?

gibranini

al tipo de Relación llamado Asociación (conexión entre clases), pero no tengo idea de como hacerlo,

eferion

¿Punteros? ¿Herencia?

patilanz

Polimorfismo? Herencia? Que es?

gibranini

Creo que herencia, solo se que se tienen que comunicar dos clases por medio de punteros o variables :S

eferion

Eso no es herencia:

En el ejemplo que pongo se ve cómo se pueden comunicar clases sin necesidad de herencia.

Código (cpp) [Seleccionar]

#include <iostream>
#include <string>

class B;

class A
{
  friend class B;

  public:
    A( )
      : b( nullptr )
    { }

    void SetB( B* ptr_b )
    { b = ptr_b; }

    void EnviarMensaje( const std::string& mensaje ) const;

  private:

    B* b;

    void PonerMensaje( const std::string& mensaje ) const
    { std::cout << "A: " << mensaje << std::endl; }
};

class B
{
  friend class A;

  public:
    B( )
      : a( nullptr )
    { }

    void SetA( A* ptr_a )
    { a = ptr_a; }

    void EnviarMensaje( const std::string& mensaje ) const
    { if ( a ) a->PonerMensaje( mensaje ); }

  private:

    A* a;

    void PonerMensaje( const std::string& mensaje ) const
    { std::cout << "B: " << mensaje << std::endl; }
};


void A::EnviarMensaje( const std::string& mensaje ) const
{ if ( b ) b->PonerMensaje( mensaje ); }

int main( )
{
  A a;
  B b;

  a.SetB( &b );
  b.SetA( &a );

  a.EnviarMensaje( "Hola" ); // Pantalla: B: Hola
  b.EnviarMensaje( "Adios" ); // Pantalla: A: Adios
}


Deberías aclarar un poco más los requisitos

vangodp


gibranini