我在取消引用指针时遇到了一些麻烦。
priority_queue<node*, vector< node*>, comparator>* pQueue = NULL;
pQueue = h->addToQueue(m);
while (!pQueue->empty())
{
cout << (*pQueue)->top() << endl;
pQueue->pop();
}
addQueue(m)
返回指向优先级队列的指针,但是当我尝试打印它时,我只获取内存地址值。
任何想法为什么?
谢谢..
答案 0 :(得分:1)
您必须为节点类重载<<
运算符,如:
ostream& operator<<(ostream& os, const node& nd)
{
os << nd.anyvalue;
return os;
}
你也必须取消引用你的指针
cout << *pQueue->top()<< endl;
看一下这里的例子:
https://msdn.microsoft.com/de-de/library/1z2f6c2k.aspx
或在这里:
http://www.tutorialspoint.com/cplusplus/input_output_operators_overloading.htm
答案 1 :(得分:0)
尝试cout << *pQueue->top() << endl;
答案 2 :(得分:0)
pQueue->top()
会返回node*
,这是node
的地址。
因此,如果您尝试直接打印它,您最终会打印一个地址。