クロスソースファイルのテンプレートのインスタンス化と使用
-
26-09-2019 - |
質問
私はコンパイル時間をスピードアップするために複数のソースファイル間で配布したいといくつかのテンプレートメンバ関数を持つクラスを持っています。 (テンプレートは、ソースではないヘッダーにので、その定義は、実装の詳細であり、クラス外で使用することを意図するものではない。)
どのように私はリンカエラーが出ないような方法でこれらのテンプレートまで分割に行きますか?私はソースファイルBに定義されたテンプレートを使用して、ソースファイルAを持っている場合は、どのように行う私は、テンプレートの適切なインスタンスがコンパイラによって構築されていることを確認?
解決
私はよりよいC ++よくある質問よりもそれに答えることができませんでした:
https://isocpp.org/wiki/faq/templates#templates- DEFN-VS-供述する
他のヒント
単にヘッダファイル内のクラスの一部としてこれらのテンプレート項目を宣言しないでください。その後、唯一のソース・ファイル内のテンプレートを定義します。たとえばます:
MyClass.hpp
class MyClass
{
public:
void SomePublicMethod() const;
};
MyClass.cpp
template<class T>
void SomethingWithT(T myVal)
{
// ...
}
void MyClass::SomePublicMethod() const
{
SomethingWithT(42);
}
所属していません StackOverflow