2012-05-06 11 views
0

可能性の重複:
Why can templates only be implemented in the header file?
Why should the implementation and the declaration of a template class be in the same header file?テンプレートと分割

私はのADTのカップルを作成し、その性能を比較するつもりです(私はデータ構造のコースを取って実験したい、ノート:私たちのインストラクターはJavaを使います)。私はジェネリッククラスを作成して、特定のデータ型に縛られていないようにしたい。私はテンプレート化されたクラスを分割することは不可能であることを前に読んでいました。コードをきれいに保つ最良の方法は何ですか?最も明白なアプローチは、javaなどの実装を隠すことなく、単純に.cppファイルを使用することです。私が使用できる他のアプローチはありますか?

+0

短い答えはすべてをヘッダーに残すことです。ちょっと長いバージョンは、コンパイル時にすべてがヘッダーに終わることを確認することです。 (言い換えれば、複数のファイルがある場合は、ヘッダーにそれらを#includeする必要があります) – Corbin

+0

ヘッダーファイルにメソッドを定義しないようにしようとしていますか? –

+0

C++ 11のexternテンプレートを使用するか、ヘッダに残しておきます。 – chris

答えて

5

ヘッダーに含まれる "ipp"ファイルを使用する人がいます。

それ以外に何か...それはそれです。テンプレートコードをコンパイル済みのファイルに入れて、それを外部で利用できるようにすることはできません。

+1

.inl(インライン用)は、.hファイルに直接含まれるファイルの一般的な拡張子ですが、他の.h/.cppsには含まれません。 –

+1

.hppも共通です –

+0

私は、あなたが含んでいるC++ヘッダーのためだけに.hppを見たことがあります。 boostはすべてそのように行われますが、実装には.ippを使用することがあります。 –

関連する問題