2015-04-14 68 views
-1

我在解引用指针时遇到了一些麻烦。C++解引用指向对象的指针

priority_queue<node*, vector< node*>, comparator>* pQueue = NULL; 

pQueue = h->addToQueue(m); 


while (!pQueue->empty()) 
{ 

    cout << (*pQueue)->top() << endl; 

    pQueue->pop(); 


} 

addQueue(m)返回一个指向优先级队列,但是当我尝试打印它,我只获得内存地址的值。

任何想法为什么?

谢谢..

+0

'node'是我创建 – nappyboi

+0

'pQueue->顶部的对象类型()'是一个'节点*'。当然,它会打印一个地址。 –

+0

您有一个指向节点对象的指针队列。 'pQueue-> top()'给你这样一个指针并且打印它会正确给出一个内存地址。 – pmr

回答

0

试着这么做cout << *pQueue->top() << endl;

+0

这也行不通。当我没有动态地分配东西时,使用while循环打印值很好。 – nappyboi

+0

如果'top()'返回'node *',那么'* pQueue-> top()'不能打印地址。请参阅Martin Schlott对操作员超负荷的回答。可能会有所帮助。 – gomons

0

pQueue->top()返回node*,这是一个地址到node。 所以很自然,如果你尝试直接打印它,你最终会打印一个地址。