我使用visual c ++。 我有一个模板类,我想为它添加重叠操作 我在下面阻止了它 在头文件
中 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:未解析的外部符号“类 std :: basic_ostream&gt; &安培; __cdecl operator&lt;&lt;(class std :: basic_ostream&gt;&amp;,class QuantityT const&amp;)“ (?? $?6K @@ YAAAV?$ basic_ostream @ DU?$ char_traits @ d @ STD @@@ STD @@ @ AAV01 ABV?$ QuantityT @ķ@@@ Z) 在函数“public:virtual void __thiscall中引用 log :: print(class std :: basic_ostream
&amp;)const“(?print @ log @@ UBEXAAV?$ basic_ostream @ DU?$ char_traits @ D @ std @@@ std @@@ Z
我该如何解决?
答案 0 :(得分:3)
尝试将源文件的内容放入头文件中:
template <class T>
inline std::ostream & operator<< (std::ostream & os,const QuantityT<T> &quantity){
}
请查看this question以获取更多信息。