С указателями всегда всё непросто, особенно в С++. И особенно, если мы имеем дело с классами/объектами. Допустим, у нас есть такой класс: class TCoord { public: int X = 0; int Y = 0; }; А в программе мы захотели сделать что-то типа этого: TCoord Coord; //Объект Coord TCoord* PCoord = &Coord; //Указатель на Coord *PCoord.X = 5; //!!! Это не компилируется Здесь мы пытаемся записать число 5 в свойство Х через указатель PCoord. Но у нас это не получится - компилятор выдаст ошибку. Хотя всё это прекрасно работает с обычными переменными (пример см. здесь). Но почему с объектом это не прокатывает? А всё дело в том, что оператор . выполняется раньше, чем оператор *, поскольку имеет более высокий приоритет. То есть мы пытаемся записать значение в свойство объекта раньше, чем разыменовываем указатель. Это и приводит к ошибке. И хотя сообщение об ошибке в этом случае довольно внятное: [Error] request for member 'X' in 'PCoord', which is of pointer type 'TCoord*' (maybe you me