2015-04-14 95 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。 所以很自然,如果你嘗試直接打印它,你最終會打印一個地址。