[英]C++ templates and friends, linker error
為什么以下代碼無法編譯(鏈接器錯誤,無法解析的外部符號, 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);
}
這行:
friend std::ostream& operator<<(std::ostream& Stream, const Class& Op);
應該:
template <class T> friend std::ostream& operator<<(std::ostream& Stream, const Class<T>& Op);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.