Hi! I need help with understanding this block of code, particullary this line: *getLeftChild() { return this - _child; }
Code:
public class UpperNode
{
BOX _box;
int _child;
FORCEINLINE UpperNode *getLeftChild() { return this - _child; }
...
};
Here I have this function:
Code:
void
UpperNode::visulization(int level)
{
if (isLeaf())
_box.visulization();
else
if ((level > 0)) {
if (level == 1)
_box.visulization();
else
if (getLeftChild())
getLeftChild()->visulization(level-1);
if (getRightChild())
getRightChild()->visulization(level-1);
}
}
It also makes calls for "getLeftChild()";
But I see that getLeftChild expects function pointer, and I absolutely have no clue where "this" comes from inside function body.
(return this - _child) - "this" has to be integer.
Or, if we gave pointer, and "this" is reffering to some UpperNode, then I can't understand to which one, I have no UpperNode array defined or something. So if this functions is actually scaling pointer address, then scaling where to? I could comprehend it, if I had some array of UpperNodes, but not just class. I have UpperNodes array defined in other friendly class, but don't think they are related
Last edited by RyuMaster; March 9th, 2013 at 04:30 AM.
'this' is a pointer to the class object the class function is working with. The 'this' pointer is a hidden pointer inside every class member function that points to the class object the member function is working with.
All advice is offered in good faith only. You are ultimately responsible for effects of your programs and the integrity of the machines they run on.
Sure, but that code is indexingthis, which really is rather funky and, as the OP altrady suspected, only works in the context of an array of such objects. This is what the OP apparently (and quite understandably) seems to have problems to comprehend. I'm afraid that can't be explained without seeing the code in a larger context, though. (And I don't think it's directly reated to friend classes in any way at all.)
I was thrown out of college for cheating on the metaphysics exam; I looked into the soul of the boy sitting next to me.
This is a snakeskin jacket! And for me it's a symbol of my individuality, and my belief... in personal freedom.
Bookmarks