0

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?

1
  • 2
    The way you do it in your first method, your pass a copy of the pointer, and then assign fifo->dequeue() to that copy. Commented Apr 10, 2020 at 11:13

1 Answer 1

1

You can pass reference to pointer like:

void TetStreamRender::releaseManagerAndGetNextOne(TetFrameManager *& manager,
                                                  ObjPool<TetFrameManager> * objPool,
                                                  SafeQueue<TetFrameManager *> * fifo)
{
    // ...
    manager = fifo->dequeue();
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.