1

コンパイル時間を短縮するために、いくつかのソースファイルに分散したいいくつかのテンプレートメンバー関数を持つクラスがあります。(テンプレートは実装の詳細であり、クラスの外部で使用することを意図していないため、ヘッダーではなくソースでの定義です。)

リンカーエラーが発生しないように、これらのテンプレートを分割するにはどうすればよいですか?ソースファイルBで定義されたテンプレートを使用するソースファイルAがある場合、テンプレートの適切なインスタンスがコンパイラによって構築されていることを確認するにはどうすればよいですか?

4

2 に答える 2

3

C ++ FAQよりもうまく答えることができませんでした:
https ://isocpp.org/wiki/faq/templates#templates-defn-vs-decl

于 2010-08-31T17:32:28.233 に答える
1

これらのテンプレートアイテムをヘッダーファイルのクラスの一部として宣言しないでください。次に、ソースファイルでのみテンプレートを定義します。例えば:

MyClass.hpp

class MyClass
{
public:
    void SomePublicMethod() const;
};

MyClass.cpp

template<class T>
void SomethingWithT(T myVal)
{
    // ...
}

void MyClass::SomePublicMethod() const
{
    SomethingWithT(42);
}
于 2010-08-31T17:39:42.370 に答える