質問

私はコンパイル時間をスピードアップするために複数のソースファイル間で配布したいといくつかのテンプレートメンバ関数を持つクラスを持っています。 (テンプレートは、ソースではないヘッダーにので、その定義は、実装の詳細であり、クラス外で使用することを意図するものではない。)

どのように私はリンカエラーが出ないような方法でこれらのテンプレートまで分割に行きますか?私はソースファイル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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top