模板标识符 不匹配任何模板声明

本文介绍了一种使用模板类实现顺序队列的方法,并提供了两种重载输出操作符的示例,一种通过独立函数实现,另一种直接在模板类内部定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种办法是在前面加 
template <class T>
class SeqQueue;
template <class T>
std::ostream& operator <<(std::ostream& os, SeqQueue<T>& Q);

//顺序队列的定义
template <class T>
class SeqQueue{
public:
        SeqQueue(int sz = 10);
        ~SeqQueue(){delete []elements;}
        bool isFull(){return ((rear + 1) % maxSize == front)? true: false;} //判断队列是否满
        bool isEmpty(){return (front == rear)? true: false;} //判断队列是否空
        bool EnQueue(const T& x); //入列
        bool DeQueue(); //出列
        friend ostream& operator<<<T>(ostream& os, SeqQueue<T>& Q); //重载栈中元素的输出操作
protected:
        int rear, front; //队尾;队头指针
        int maxSize, tag; //队列最大可容纳的元素个数;标记
        T* elements; //存放队列元素的数组
};
template <class T>
ostream& operator<<(ostream& os, SeqQueue<T>& Q){
        int num;
        if(Q.front==Q.rear && Q.tag==1)
            num=Q.maxSize;
        else
                num=(Q.rear - Q.front + Q.maxSize) % Q.maxSize;
        for(int i = Q.front; i != Q.rear; i = (i + 1) % Q.maxSize)
                os<<i<<":"<<Q.elements[i]<<endl;
        return os;
}


第二种方法,就是直接在模板中实现在,即: 
template  
class Array{ 
public: 
........something...... 
friend ostream& operator<< (ostream& out,Array&rhs){ 
.......something..... 

}; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值