Ваш код плохо сформирован и не компилируется. Тип blah
не int*
, это int (A::*)
. То есть, это не «указатель на int
», это «указатель на элемент данных типа класса A
, тип которого int
».
Обратите внимание, что для получения указателя на элемент член должен быть доступен. Чтобы вычислить &A::b
в foo()
, b
должен быть публичным пользователем данных, или foo()
должен быть другом A
.
Указатель на объект не указывает на объект. Скорее, указатель на элемент может быть привязан к объекту, чтобы получить значение его члена данных. Вы можете получить значение элемента данных b
объекта A
путем привязки указателя-к-элементу blah
к экземпляру A
. Например,
A x;
int b_value = x.*blah; // b_value has the value of x.b
Вы уверены, что 'b' не является статическим членом' A'? – reuben
Я уверен. Я видел фрагменты кода, где он, казалось, полагался, что он не является статическим членом. – OniLink
В этом случае вы уверены, что тип 'blah' является' int * '? –