1,VS2013:
错误 1 error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Stack<int> const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$Stack@H@@@Z),该符号在函数 _main 中被引用 C:\Users\Administrator\documents\visual studio 2013\Projects\leetcodeTree\leetcodeTree\leetcodeTree.obj leetcodeTree
错误 2 error LNK1120: 1 个无法解析的外部命令 C:\Users\Administrator\documents\visual studio 2013\Projects\leetcodeTree\Debug\leetcodeTree.exe leetcodeTree
(链接错误)出错原因:
在类内声明友元函数时,需要在上面加上 模板头 template<class T>。(具体原因还不是很清楚)
解决办法:
(a)在上面加上一行模板头即可。
(b)声明时使用 friend ostream& operator<< <>(ostream& os, const Stack<T>&) 可以解决。(多加了一个 <>)
更加详细的讨论点击这里。