C ++プライマークラステンプレートのその他の注意事項。私はいつももっと簡単でインスタンス化を制御するかもしれないいくつかのメモを忘れています

c ++いくつかのテンプレートの要約と反映

template.h


template <typename T>class Test{
public:
    T testFunction();
    template <typename D>
    void printD(D data);
};
template <typename T>
template <typename It>
void Test<T>::printD(It data) {

}

template.cpp

#include "template.h"

template <typename T>
T Test<T>::testFunction() {

}


//explicit instantation
template class Test<int>;

メンバー関数の定義が不要な場合は、クラステンプレートのメンバーテンプレートがファイル内にある必要があることに注意してください。

次に、C ++でコントロールのインスタンス化の問題があります

たとえば、クラステンプレートのインスタンス化を表示します

 template class Test<int>;

コンパイラですでにインスタンス化されています。他の場所でインスタンス化されていることをコンパイラに通知すると、externを使用できます。

extern template class Test<int>;

おすすめ

転載: blog.csdn.net/qq_32783703/article/details/104881540