Non ho trovato un titolo migliore per la domanda. Lasciatemi spiegare meglio ora:Come sovrascrivere i metodi di oggetti C++ annidati?
Il progetto su cui sto lavorando si collegherà a un server remoto, crittograferà la sessione e invierà/riceverà i pacchetti di dati. Mi piacerebbe renderlo abbastanza modulare, quindi ho pensato che sarebbe stato carino usare 3 classi distinte. Questi sarebbero:
1) Una classe wrapper socket con alcuni metodi virtuali come OnReceivedData() e OnConnected().
2) Una classe ereditata del wrapper socket, che implementa la crittografia dei dati prima che venga inviata e decrittando i dati al suo arrivo.
3) L'oggetto principale stesso, che dovrebbe sostituire una qualsiasi delle classi precedenti in base alla sua necessità di essere crittografato o meno, così potrebbe ricevere anche la notifica di eventi OnReceivedData() e OnConnected() e agire sulla base di esso.
Quindi il problema è: come faccio a sapere che il mio programma deve prima chiamare l'evento sull'oggetto di crittografia e quindi chiamare lo stesso evento sull'oggetto principale? Perché suppongo che se sovrascrivo il socket wraper con la crittografia e quindi eseguo l'override della crittografia con l'oggetto principale, probabilmente chiamerà semplicemente il metodo dell'oggetto principale (chiamerebbe OnReceivedData() direttamente sull'oggetto principale, non passando attraverso la decrittografia prima l'oggetto, vero?).
Si tratta di ereditarietà multipla?
BTW se pensi che sia un cattivo progetto, apprezzerei qualsiasi approccio migliore. Grazie per aver dedicato del tempo a leggere questo.
Il mio suggerimento, provare a utilizzare modelli di progettazione, come ad esempio 'Builder' o' Factory'. –