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.