C ++解除引用对象的指针

时间:2015-04-14 21:16:06

标签: c++ pointers

我在取消引用指针时遇到了一些麻烦。

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

pQueue = h->addToQueue(m);


while (!pQueue->empty())
{

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

    pQueue->pop();


}

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

任何想法为什么?

谢谢..

3 个答案:

答案 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的地址。 因此,如果您尝试直接打印它,您最终会打印一个地址。