Stavo leggendo un vecchio libro di strutture dati e diceva che durante la programmazione delle classi di template dovresti includere il .cpp alla fine del file .h.Incluso .cpp alla fine del file di intestazione del modello
Per quanto ne so, è necessario eseguire implementazioni a funzioni complete nel file .h per qualsiasi funzione membro della classe template, a causa del modo in cui il compilatore di template funziona.
Le uniche funzioni che ho appreso potrebbero essere inserite in un file di implementazione per una classe modello erano le funzioni di specializzazione modello, ad esempio template<> Class<Type>::function_name()
.
Perché questo libro dovrebbe suggerire di includere il .cpp alla fine del .h? questo è solo un modo per separare le implementazioni in file diversi e farli compilare con l'intestazione? e se sì, dove metteresti delle vere specializzazioni? Suppongo che non potrebbero entrare nel file .cpp incluso nell'intestazione.
Non ho mai visto in vita mia questi file denominati 'ipp' –
@JohnDibling: è tutto boost. Le domande a riguardo sono state persino sollevate qui su SO prima. –
vedere http://stackoverflow.com/questions/543507/in-the-c-boost-libraries-why-is-there-a-ipp-extension-on-some-header-files –