2015-08-14 11 views
5

So che la definizione e l'implementazione della classe template devono essere sullo stesso file di intestazione. Ma a scuola mi è stato insegnato un po 'diversamente.Incluso il file .cpp nel file di intestazione per una classe template

Avrò la definizione della classe template nel file di intestazione e, alla fine del file di intestazione, farò #include "MyFile.cpp", che contiene l'implementazione della classe basata su modello.

Questa cattiva pratica di programmazione?

+1

No, è molto comune che le implementazioni lo facciano anche se tendono a dare un suffisso diverso per rendere chiaro che non è pensato per essere compilato separatamente come "tcc" nel caso di GCC. – user657267

+0

È solo un problema di convenzione. – songyuanyao

+0

Grazie per le risposte ragazzi! – dwnenr

risposta

5

"Questa cattiva pratica di programmazione?"

In generale no ed è una tecnica molto comune. Ma il problema è l'estensione del file .cpp, che potrebbe influire su molti IDE e sistemi di generazione per considerarlo come un normale file sorgente. Le estensioni più comunemente utilizzate sono .tcc, .tpc.

+0

+1 '.tcc'; Ci sono tanti modi in cui il software può rovinarsi già, non ha senso usare '.cpp' per confondere il tuo sistema di compilazione quando' .tcc' è comune. –

+0

Ho anche visto '.tpp' e' .inl', quest'ultimo usato perché le funzioni 'inline' meritano lo stesso trattamento. – Morwenn

+0

@Morwenn Non c'è davvero una convenzione comune e ho visto molti stili diversi. Il punto importante è renderlo distinto da ciò che viene utilizzato dal sistema di generazione per trovare i normali file di origine C++. –

Problemi correlati