e anche perche' un sistema del genere lo avevi gia' postato per altro, quindi ok.
Ancora una volta sono stato poco chiaro io, o sto seguendo una strada sbagliata: intendevo che i subject da seguire erano due, ma per un determinato observer concreto, non in tutto il programma.
Detto in altre parole: i Subject concreti da osservare sono di piu' tipi, piu' di tre, ma non sono piu' di due, max tre per observer concreto.
Il tentativo fatto con setSubject in associazione a dynamic_cast, era per avere un metodo da reimplementare in base alle necessita' nelle classi concrete di observer, senza avere un sistema adatto al singolo caso specifico, spero di essermi spiegato questa volta.
Anzi, aggiungo questo sperando di chiarire cosa avevo in testa.
La classe Subject, cosi' come implementata era gia' di uso generale, nel senso che le classi concrete basta che siano derivate da essa, e possono gestire gli observer senza problemi (aggiunta, rimozione, comunicazione della distruzione del subject agli observer e quanto serve).
Per la classe Observer, se il subject e' uno, anche li non ci sono problemi, la comunicazione col subject e' semplice: nell'observer concreto tengo il riferimento al subject concreto e dovrei essere a posto.
Se l'observer deve osservare piu' subject, e devo accedere ai metodi specifici del tipo di subject concreto, allora nasce il tentativo della classe DerObserverMoreSubject.
Interessante std::set: tra l'altro toglie il pensiero di controllare l'unicita' del dato passato, qualora questo sia un requisito.
Grazie.


Rispondi quotando
, perché è più comodo, meno laborioso e più sicuro di enum più funzione virtuale.