Как работает синтаксис для переменной указателя объекта указателя?

При обращении к переменной указателя объекта указателя, как работает синтаксис? Нужно ли мне два *?

Вот пример, чтобы лучше объяснить мою ситуацию:

void function(ofObject *object)  //passing by ref so that I can change it
{
int n;
n=*object.*x;  //object is a pointer, but so is the class member x;
}

Если я просто поставлю * в начале, то *object.x просто вернет адрес object.xне так ли? Или это будет? Я просто обдумываю это?

-4

Решение

* оператор имеет более низкий приоритет, чем . оператор, так *object.x будет ошибка компилятора, так как это так же, как *(object.x), Это то, что -> Оператор существует для. object->x такой же как (*object).x, Если ofObject::x указатель, вы можете разыменовать его, используя * оператор как обычно. Итак, собрав все вместе, чтобы разыменовать член указателя через указатель, вы можете использовать *object->x,

3

Другие решения

используйте (), чтобы уменьшить путаницу или создать методы доступа
если вам нужно значение x, * (object-> x) или * ((* object) .x)
но если вы создаете методы доступа, вы можете вызвать object-> getx (); где getx () возвращает значение x

0

Для любого указателя, если вы хотите почтить его, используйте * и в качестве * имеет более низкий приоритет, чем . Будет полезно, если вы используете () отметить предпочтение исполнения.

*((*object).x)
*object->x    (I will recommend this).
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector