我将链接列表放到<<<<<<运营商。这是代码:
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 *)并输出一个内存地址,因此无法使用运算符。
答案 0 :(得分:2)
操作员不运行,输出是内存地址。
而不是:
Node *first = ...;
cout << first;
你需要这个:
Node &first = ...;
cout << first;
否则您将指针传递给operator<<
。
答案 1 :(得分:2)
您告诉编译器如何打印Node
,但您正在打印Node *
。那些是不同的类型。要获得您想要的行为,请尝试cout << *first;
和cout << *bq.getFirst();
。