首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

重载函数模板做类模版的友员出错,该怎么解决

2012-06-11 
重载函数模板做类模版的友员出错C/C++ code//model1.h#include iostream//声明部分template class Type

重载函数模板做类模版的友员出错

C/C++ code
//model1.h#include <iostream>//  声明部分template <class Type>class QueueItem;template <class Type>std::ostream &operator<<(std::ostream,QueueItem<Type>&);//////////////////////////////////////////////////////////template <class Type>class QueueItem{    friend std::ostream& operator<<(std::ostream&,QueueItem<Type>&);public:    QueueItem(const Type &t)        :item(t)    {        next=0;    }private:    Type item;    QueueItem *next;};

C/C++ code
//model1.cpp#include <iostream>#include "model1.h"template <class Type>std::ostream& operator<<(std::ostream &os,QueueItem<Type> qi){    os<<"自定义COUT"<<std::endl;    os<<qi.item;    return os;}

C/C++ code
#include <iostream>#include "model1.h"int main(){    QueueItem<int> qi(3);        //std::cout<<qi;//如果加了这句就会出错为什么?    system("pause");    return 0;}

出错信息:
main.obj : error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class QueueItem<int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$QueueItem@H@@@Z) referenced in function _main


[解决办法]
模板类的声明和实现只能放在一个文件中,不能分开

热点排行