In a member function, you usually do not need to use this to access class members; you can just use:
left->postfix();
and etc.
If you have function parameters or other local variables with the same name as the class variable, you can use this to refer to a member variable, for example,
this->left->postfix();
The reason your code is illegal is because it does not properly treat left as a pointer. You need to dereference left with -> to access your members, as shown in the correct code here. (You can also use the equivalent of (*left).postfix() , but that just makes you use more parentheses without real benefit.)
Using the indirectness operator * at the beginning of an expression is also incorrect, because it is applied to the result of postfix() (i.e. it does disassembly, which returns postfix() ). postfix() returns nothing, so this is an error. It is important to remember that the operators . and -> have a higher priority than * .
source share