I Pimpl sono una fonte di codice in un sacco di codice C++. Sembrano il tipo di cosa che una combinazione di macro, modelli e forse un piccolo aiuto esterno può risolvere, ma non sono sicuro di quale sia il modo più semplice. I've seen templates che aiutano a fare un po 'di sollevamento ma non di molto - si finisce comunque per dover scrivere le funzioni di inoltro per ogni metodo della classe che si sta tentando di avvolgere. C'è un modo più semplice?Automatizza il pimpling delle classi C++: esiste un modo semplice?
Sto immaginando uno strumento utilizzato come parte del processo di produzione. Vuoi che le tue intestazioni pubbliche siano classi pimpl'd, quindi fornisci un file di input, ad esempio pimpl.in, che elenca le classi (implementate un-pimpl'd) che desideri avvolgere, quindi quel file viene esaminato, le classi pimpl vengono generate e solo le intestazioni (non le intestazioni della classe originale) vengono installate durante un 'make install'. Il problema è che non vedo alcun modo per farlo senza un parser C++ completo, qualcosa che anche i produttori di compilatori non riescono a ottenere. Forse le classi potrebbero essere scritte in qualche modo che rende più facile il lavoro di uno strumento esterno, ma sono sicuro che finirei per perdere tutti i tipi di casi d'angolo (ad esempio classi basate su modelli e/o funzioni membro basate su modelli).
Qualche idea? Qualcun altro ha già una soluzione per questo problema?
pigro C++ fa qualcosa di simile – Amnon