Quote Originariamente inviata da ing82 Visualizza il messaggio
Avro' quindi due subject, che sono di due classi diverse, perchè rappresentano due cose diverse, in cui registrerò il mio observer (DerSubject1 e DerSubject2).
Nell'observer, dovrò quindi tenere traccia di entrambi i subject osservati, che non varieranno di numero.
Ok, i subject sono due. A questo punto il parametro della funzione update() serve solo a stabilire quale subject usare per aggiornare i dati dell'observer. A questo punto dovresti modificare update() così:
codice:
      if(subject==mSubject1)
      {
        std::cout<<"\nHello from observer "<<this;
        std::cout<<"\nI'm observing subject "<<mSubject1;
        parametro1 = mSubject1->metodo1(); // esempio
      }

      if(subject==mSubject2)
      {
        std::cout<<"\nHello from observer "<<this;
        std::cout<<"\nI'm observing subject "<<mSubject2;
        parametro2 = mSubject2->metodo2(); // esempio
      }
Inoltre non puoi passare nel costruttore (o altra funzione preposta) un generico Subject*. Devi passare proprio DerSubject1* e DerSubject2* se non vuoi perdita di informazioni.

...ecco il perchè del tentativo di ricorrere al d.p. observer.
Beh, è il suo mestiere, no?