BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #95937同步于 2017/8/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

渣新求问输出队列元素时遇到的问题

tusiyun
2017/8/6镜像同步12 回复
想要输出链式队列的元素,但是重载<<函数怎么改都有问题,求大神指点正确写法
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
specops机器人#1 · 2017/8/6
写在类内参数就不需要左操作数 写在类外才需要 简单来说
specops机器人#2 · 2017/8/6
所以你这里要把它拎出去
Nroskill机器人#3 · 2017/8/6
完整代码贴出来吧,这代码没看出问题
wjy1230机器人#4 · 2017/8/7
貌似是友元运算符没有声明,你虽然在类内对运算符进行了定义,但是这只是保障<<可以访问类内成员。换句话说,你需要在使用<<之前对重载的运算符进行声明。 个人看法,如果不对请指正。 【 在 specops (Perfec) 的大作中提到: 】 : 写在类内参数就不需要左操作数 写在类外才需要 简单来说 通过『我邮2.0』发布
wjy1230机器人#5 · 2017/8/7
在类内声明,在类外定义。 通过『我邮2.0』发布
tusiyun机器人#6 · 2017/8/7
贴了 【 在 Nroskill 的大作中提到: 】 : 完整代码贴出来吧,这代码没看出问题
Nroskill机器人#7 · 2017/8/7
因为你没提供Node<T>的实现,我只能自己按照你的写法写了一个,大致写法都一样,没发现出什么错啊,你可以看一眼Node<T>有没有问题,或者提供一下你的报错的点在哪里 ``` #include<iostream> using namespace std; template <class T> class Node { public: Node<T>* next; T data; Node(T d) { data = d; next = NULL; } }; template <class T> class LinkedQueue { private: Node<T> *front, *rear; public: LinkedQueue(); void enqueue(T); T dequeue(); friend ostream& operator<<(ostream& out, LinkedQueue<T>& list) { out<<"("; for(auto p = list.front; p!=NULL; p=p->next) { out<<p->data; if(p->next) out<<","; } out<<")"; return out; } }; template <class T> LinkedQueue<T>::LinkedQueue() { front = rear = NULL; } template <class T> void LinkedQueue<T>::enqueue(T x) { auto t = new Node<T>(x); if(front) rear->next = t; else front = t; rear = t; } template <class T> T LinkedQueue<T>::dequeue() { if(!front) { throw("empty"); } auto r = front->data; auto p = front; front = front->next; delete p; return r; } int main() { LinkedQueue<int> t; t.enqueue(1); t.enqueue(2); cout<<t<<endl; cout<<t.dequeue()<<endl; cout<<t<<endl; return 0; } ``` 【 在 tusiyun 的大作中提到: 】 : 贴了
tusiyun机器人#8 · 2017/8/7
Node<T>没有问题,编译没问题但是一旦运行就是停不下来的满屏数字。。 【 在 Nroskill 的大作中提到: 】 : 因为你没提供Node<T>的实现,我只能自己按照你的写法写了一个,大致写法都一样,没发现出什么错啊,你可以看一眼Node<T>有没有问题,或者提供一下你的报错的点在哪里 : [md] : ``` : ...................
Nroskill机器人#9 · 2017/8/7
Node<T>的构造函数里有没有```next = NULL```?这句不能少。 如果有的话就把全部代码打包发上来吧,得手动debug看看错在哪里 【 在 tusiyun 的大作中提到: 】 : Node<T>没有问题,编译没问题但是一旦运行就是停不下来的满屏数字。。