【发布时间】:2024-06-19 01:30:02
【问题描述】:
为什么下面的代码无法编译(链接器错误,无法解析的外部符号,class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class cClass<int> const &)" (??6@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AEAV01@AEBV?$cClass@H@@@Z))
#include <iostream>
template <class Type> class Class{
public:
friend std::ostream& operator<<(std::ostream& Stream, const Class& Op);
};
template <class Type> std::ostream& operator<<(std::ostream& Stream, const Class<Type>& Op){
return(Stream);
}
int main(){
Class<int> A;
std::cout << A;
return(0);
}
【问题讨论】:
-
查找友元函数的语义。您还必须将类中的友元函数声明为模板。