В функции-члене вам обычно не нужно использовать this
для доступа к членам класса; Вы можете просто использовать:
left->postfix();
и т.д.
Если у вас есть параметры функции или другие локальные переменные, которые имеют то же имя, что и переменная члена класса, вы можете использовать this
для ссылки на переменную-член, например,
this->left->postfix();
Причина, по которой ваш код недопустим, заключается в том, что он неправильно обрабатывает left
как указатель. Вам необходимо разыменовать left
, используя ->
, чтобы получить доступ к его членам, как показано в правильном коде здесь. (Вы также можете использовать эквивалент (*left).postfix()
, но это просто заставляет вас использовать больше скобок без реальной выгоды.)
Использование оператора косвенности *
в начале выражения также неверно, поскольку оно применяется к результату postfix()
(т.е. оно разыменовывает все, что возвращается postfix()
). postfix()
ничего не возвращает, так что это ошибка. Важно помнить, что операторы .
и ->
имеют более высокий приоритет, чем *
.