Salve a tutti, vado subito alla domanda: considerato il codice C seguente:

codice:
//Item.h (ovviamente perso come esempio generale)
typedef struct item *Item;

Item newItem (char*);
char *itemGetName (Item);
...
void deleteItem ();
codice:
//Item.c
struct Person {
    char *itemName;
    ...
}

Item newItem () {
    Item local;

    local = malloc (sizeof (*local));
    ...
}

char* itemGetName (Item this) {
    return this->itemName;
}

...
come "tradurlo" in C++ mantenendo l'information hiding, la leggibilità e producendo un assembly il più simile possibile? O più in generale quali sono i modi (con vantaggi e svantaggi) per utilizzare l'idioma pimpl / compiler firewall / cheshire cat (non so se ci sono differenze tra questi)?
Cercando in rete ho trovato vari pareri, ma senza i perchè. Un grazie infinito a chi può charirmi questo dubbio.