Указывая на статического члена класса - PullRequest
1 голос
/ 19 марта 2011
class A
{
static int x;
};

Как получить адрес x, используя указатель на член?

Ответы [ 2 ]

5 голосов
/ 19 марта 2011

Поскольку он статический, это должен быть следующий синтаксис:

int *px = &A::x;  //x is static member

Для нестатического члена это синтаксис:

 int A::*py = &A::y; //y is non-static member

Пример:

struct A
{
  static int x;
  int y;
};

int A::x=100;

int main() {
        int *px = &A::x;
        int A::*py = &A::y;

        A a;
        a.y = 200;

        cout << *px << endl;   //used just like normal pointers
        cout << a.*py << endl; //note how the pointer-to-member is used!
        cout << a.y << endl;   //a.*py and a.y are equivalent!
        return 0;
}

Выход:

100
200
200

Демо: http://ideone.com/0xSdW

Обратите внимание на различия между указателем на статические элементы и указателем на нестатические элементы и тем, как они используются!

0 голосов
/ 19 марта 2011

Вы можете использовать & A :: x . Но не забудьте отметить общедоступную переменную, и для всех экземпляров класса будет только один X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...