3

VisualC++を使用しています。テンプレートクラスがあり、重複する操作を追加したいのですが、ヘッダーファイルに以下のようにインプルメントします

    template <class T> class QuantityT;
    template <class T>
    inline std::ostream & operator<< (std::ostream & os,const QuantityT<T> &quantity);


    template <class T>
    class QuantityT{

            T quantity_;
            template<class T> friend inline std::ostream & operator<< <T>(std::ostream & os,const QuantityT<T> &quantity);
    };

ソースファイルで

    template <class T>
    inline std::ostream & operator<< (std::ostream & os,const QuantityT<T> &quantity){
    }

しかし、リンクエラーが発生します:

main.obj:エラーLNK2019:未解決の外部シンボル "class std :: basic_ostream>&__ cdecl operator <<(class std :: basic_ostream>&、class CapacityT const&)"(?? $?6K @@ YAAAV?$ basic_ostream @ DU?$ char_traits @ D @ std @@@ std @@ AAV01 @ ABV?$ QuantityT @ K @@@ Z)関数 "public:virtual void __thiscall log :: print(class std :: basic_ostream

&)const "(?print @ log @@ UBEXAAV?$ basic_ostream @ DU?$ char_traits @ D @ std @@@ std @@@ Z

どうすれば修正できますか?

4

1 に答える 1

3

ソース ファイルの内容をヘッダー ファイルに入れてみます。

template <class T>
inline std::ostream & operator<< (std::ostream & os,const QuantityT<T> &quantity){
}

詳細については、この質問を確認してください。

于 2013-03-14T11:03:11.247 に答える