При обращении к переменной указателя объекта указателя, как работает синтаксис? Нужно ли мне два *
?
Вот пример, чтобы лучше объяснить мою ситуацию:
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
не так ли? Или это будет? Я просто обдумываю это?
*
оператор имеет более низкий приоритет, чем .
оператор, так *object.x
будет ошибка компилятора, так как это так же, как *(object.x)
, Это то, что ->
Оператор существует для. object->x
такой же как (*object).x
, Если ofObject::x
указатель, вы можете разыменовать его, используя *
оператор как обычно. Итак, собрав все вместе, чтобы разыменовать член указателя через указатель, вы можете использовать *object->x
,
используйте (), чтобы уменьшить путаницу или создать методы доступа
если вам нужно значение x, * (object-> x) или * ((* object) .x)
но если вы создаете методы доступа, вы можете вызвать object-> getx (); где getx () возвращает значение x
Для любого указателя, если вы хотите почтить его, используйте *
и в качестве *
имеет более низкий приоритет, чем .
Будет полезно, если вы используете ()
отметить предпочтение исполнения.
*((*object).x)
*object->x (I will recommend this).