简体   繁体   中英

How to assign pointer to pointer?

I have such method

void TetStreamRender::releaseManagerAndGetNextOne(TetFrameManager * manager,
                                                      ObjPool<TetFrameManager> * objPool,
                                                      SafeQueue<TetFrameManager *> * fifo)
    {
        ...

        manager = fifo->dequeue();
    }

also method fifo->dequeue() return TetFrameManager * , so I assume that manager should get new pointer returned by dequeue() method. So, I pass to releaseManagerAndGetNextOne() pointer to TetFrameManager and at the end I expect that this pointer get new pointer, but it doesn't.

Actually if I change this method like this

TetFrameManager * TetStreamRender::releaseManagerAndGetNextOne(TetFrameManager * manager,
                                                      ObjPool<TetFrameManager> * objPool,
                                                      SafeQueue<TetFrameManager *> * fifo)
    {
        ...

        return fifo->dequeue();
    }

It works fine. But question is why in my first example pointer assignment doesn't work as expected?

You can pass reference to pointer like:

void TetStreamRender::releaseManagerAndGetNextOne(TetFrameManager *& manager,
                                                  ObjPool<TetFrameManager> * objPool,
                                                  SafeQueue<TetFrameManager *> * fifo)
{
    // ...
    manager = fifo->dequeue();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM