我有一个小问题把我的链接列表< <运算符。下面的代码:编译器不使用运算符<<
ostream& operator<<(ostream& o,const Node& f)
{
Node *p = new Node(f.val);
p->next = f.next;
p->prev = f.prev;
o << "[";
while(p->next->val != -1)
{
p = p->next;
o << p->val << " ";
}
o << "]" << endl;
delete p;
return o;
}
所以,当我用它在main(),它看起来是这样的:
BiQueue bq();
bq.Push(5);
...
cout << bq.getFirst();
但是经过测试,运营商只是不运行,输出一个内存地址。 所以我直接测试它: cout << first;
(其中第一个是Node *),它输出一个内存地址,所以操作员没有被使用。
你是否在类BiQueue中声明了'ostream&operator <<(ostream&o,const Node&f)'作为朋友函数? – user1
是的,它是一个朋友功能 – user3741975
不相关:动态分配一个节点对象只是为了能够流式传输看起来很浪费。 – juanchopanza