Uh - what's the point of this exercise? You declare m_tree private, but then you hand over a direct reference to it whenever the user asks. There's no point in making m_tree private in such a case, since you throw away privacy by passing back the object.
Here's a more sane solution that accomplishes exactly the same thing with far less code: make m_tree public and access it directly via apple.m_tree. There's no difference between that and the far more convoluted constructs you're wrestling with above.
Bookmarks