次のコード (これは私が必要とするものの簡略化されたバージョンです) はリンクしません
*.h ファイル内:
class InterfaceFunctionField2 {
public:
template<class outputType> outputType to() { return outputType(); }
};
*.cpp ファイル内
template<> double InterfaceFunctionField2::to<double>()
{ return 3.; }
このクラスは静的ライブラリにあります。
「エラー LNK2005: "public: double __thiscall InterfaceFunctionField2::to(void)const " (??$to@N@InterfaceFunctionField2@@QBENXZ) already defined in ..." および "2 番目の定義は無視されました" という警告 LNK4006 が表示されます。
私は InterfaceFunctionField2::to() 特殊化を 1 回だけ定義し、#include *.cpp ファイルは使用しません....
私はインターネット(例えばここ)で調べましたが、このタイプのコードは問題ないようですが、リンカは同意しません。手伝ってくれる?ありがとう。