L'idioma PIMPL in realtà normalmente si usa per nascondere i dettagli implementativi di una classe (nello specifico, i campi e in generale qualunque cosa che possa alterare il layout binario dalla classe) dagli utilizzatori, tipicamente per evitare problemi di compatibilità binaria o per evitare di dover ricompilare tutto ogni volta che l'implementazione di una classe che il client usa direttamente viene modificata.
Se non hai di questi problemi non vedo necessità di usare PIMPL, specie se il codice client userebbe esclusivamente puntatori alla classe base (in un certo senso fare riferimento ai metodi solo attraverso una classe base astratta è già di per se una forma di PIMPL direttamente supportata dal linguaggio, visto che tutto quello che il codice client può fare sull'oggetto passa attraverso la sua vtable).

Rispondi quotando
