2012-03-28 7 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を返します。

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

このコードは、メンバ関数では、たとえば、m_Idがアクセス可能であるコンテキストで動作します:次のように、間接的にm_Idにアクセスするためにそれを使用することができます。

この例では、あなたのクラスにlongという種類の他のメンバーがないので興味深いわけではありません。そのようなメンバーが複数存在する状況では、メンバー・ポインターがより価値が高くなります。特定のメンバーへのバインディングを実行時に延期することができます。

+0

大変ありがとうございました。それは私が聞きたいものでした。何故そんなに多くの下降音が聞こえるのか分かりません。( – Davita

+0

@Davita「何故そんなに多くの下降音が聞こえないのか」 - 私はそれが有効な質問だと思います。 012vを返信しました。 – dasblinkenlight

+0

もう一度お友達に感謝します:) – Davita

関連する問題