0
私はテンプレートクラスに持ってエクスターナル・テンプレート:宣言が宣言されていないもの
expof.h:私は繰り返し、例えばのための私のコード全体で使用
template <class T>
class ExpOf{
...
}
T = double
[およびその他のクラスExpOf
については何も知らないはずです。] は、だから私はexpofdouble.cpp
#include "expof.h"
template class ExpOf<double>;
、それがないように別のヘッダで宣言しますexpof.hがインクルードされたときにコンパイルされます。
expofdouble.h:
extern template ExpOf<double>;
私はこれをコンパイル(打ち鳴らす-800.0.42.1)のI取得(多数)の警告が
expofdouble.h: warning: declaration does not declare anything [-Wmissing-declarations]
extern template ExpOf<double>;
^~~~~~~~~~~~~
私は希望の動作を取得していますか?それではなぜ警告?私はこれを違うはずか?
おかげで、それはあなたのコメントの後に、プレーンと簡単でした。 しかし、明示的にデフォルトの移動コンストラクタをインスタンス化しない 'テンプレートクラス'のためにコンパイラ依存のリンク時間エラーが発生しています... これはいくつかのコンパイラの既知のバグであるようです(http:それが誰かを助ける場合は、/ stackoverflow.com/questions/38929950/automatic-constructor-in-explicitly-instantiated-class-template)を参照してください。 – Lio