关于c++操作符(<< / >>)的重载 懂的进来指点指点
// deque.h
//前向声明 ,如果有不对的 请指出来
template <class Type> class QueueItem;
template <class Type> class Queue;
template <class Type> ostream& operator<< ( ostream &, const Queue<Type>& );
template <class Type> ostream& operator<< ( ostream &, const QueueItem<Type>& );
template <class Type>
class QueueItem
{
friend class Queue<Type>;
public:
QueueItem( const Type& t ) : item(t) {next = 0;}
friend ostream& operator<< ( ostream &, const QueueItem<Type>& ); //友元声明
QueueItem *next;
private:
Type item;
};
template <class Type>
class Queue
{
public:
Queue() : front( 0 ), back( 0 ) { }
~Queue();
friend ostream& operator<< ( ostream &, const Queue<Type>& ); //友元声明
private:
QueueItem<Type> *front;
QueueItem<Type> *back;
};
// 只给出重载函数的定义, 其它函数的定义给略了
template <class Type> ostream& operator<< ( ostream &os, const Queue<Type> &q )
{
os << "< ";
QueueItem<Type> *p;
for( p=q.front; p; p=p->next)
os << *p << " ";
os << " >";
return os;
}
template <class Type> ostream& operator<< ( ostream &os, const QueueItem<Type>&qi )
{
os << qi.item;
return os;
}
编译运行时有错误
[Linker error] undefined reference to `operator<<(std::ostream&, Queue<int> const&)'
知道原理的给我提个醒啊