我有一個小問題把我的鏈接列表< <運算符。下面的代碼:編譯器不使用運算符<<
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