Ver Mensaje Individual
  #3  
Antiguo 13-04-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Reputación: 18
_cero_ Va por buen camino
mmm me he liado tanto, con las simples llamadas a este que llama a este otro que no se si termine con más dudas que respuestas, pero la cosa creo que va por enviar algo que no existe, es decir en la creación de B aún no hay ninguna dirección que apunte a event_B (esta es la única explicación a la que doy fe), por ende la solución sería crear punteros del tipo al método que usas, pero que estén por encima de B o que se creen antes, después le asignas la función y así ya jala. La cuestión es que cosas ases en event_B, algo así.

Código:
class A
{
public:
    A( void( * vEvent )( A* , char ) ) : event_A( vEvent ){ };
    ~A( ){ };
    void( *publicEvent_A )( A* );

private:
    void( *event_A )( A*, char );
    void myProcedure( )
    {
        event_A( this, 'x' );
    }
};

typedef void( *Fun )( A * p1, char ca );
typedef void( *Fun2 )( A * a );
Fun aa;
Fun2 bb;

class B
{
public:
    B( )
    {
        myA = new A( aa );
        myA->publicEvent_A = bb;
    };
    ~B( );

private:
    A* myA;
    void myProcedure_B( A* sender )
    {
        sender = sender;
    };
};
En fin me lie así que este comentario también es un lio, ahora incluso no distingo la diferencia entre puntero o instancia jaja.

Pd. Estimado Ñuño Martínez desde la ignorancia pregunto, función no es lo mismo que método? Ambos tienen parámetros variables y retornos variables, siendo la única diferencia el paradigma de programación (estructurada u orientada a objetos, es decir solo palabras no funcionalidad), porque hasta donde yo he programado da lo mismo pasar una función X a un OnClick X.

Pd2. Sería interesante que alguien resolviera el hilo y dijera que está pasando ya que sí que no me funciona pero no le encuentro falla lógica.
Responder Con Cita