2012-03-28 2 views
1

Предположим, у меня есть класс, как это:Что возвращает это утверждение?

class Owner 
{ 
private: 
    long m_Id; 
    QString m_Name; 

public: 
    Owner() : m_Id(0) { ; } 
    virtual ~Owner() { ; } 

    inline long id() const { return m_Id; } 
    inline void setId(long id) { m_Id = id; } 

    inline const QString & name() const { return m_Name; } 
    inline void setName(const QString & name) { m_Name = name; } 
} 

Я видел код &Owner::m_Id;. Я в замешательстве, он возвращает указатель на член? и если да, то как его можно использовать на экземплярах Владельца?

+2

Не могли бы вы предоставить некоторый контекст использованию '& Owner :: m_Id'? – soulmerge

+0

В каком контексте вы видели такое? – Shahbaz

+0

Возможный дубликат [C++, указатель на функцию-член] (http://stackoverflow.com/questions/2402579/c-function-pointer-to-member-function) –

ответ

4

Он возвращает member pointer. Вы можете использовать его для доступа m_Idкосвенно следующим образом:

long Owner::* ptrMem = &Owner::m_Id; 
Owner owner; 
owner.*ptrMem = 10; 
cout << owner.m_Id << endl; 

Этот код работает в условиях, когда m_Id доступен, например, в функции члена.

Этот пример не слишком интересен, потому что ваш класс не имеет других членов типа long. В ситуациях, когда существует несколько таких членов, указатели элементов становятся более ценными: вы можете отложить привязку к определенному члену во время выполнения.

+0

Большое спасибо, это было то, что я хотел услышать. Не понимаю, почему так много downvotes :( – Davita

+0

@ Давита «Не понимаю, почему так много downvotes», ни я - я думаю, что это правильный вопрос, поэтому я поддержал его. – dasblinkenlight

+0

Спасибо моему другу, еще раз :) – Davita

Смежные вопросы