C++ のクラス メンバーの静的参照について質問があります。同じクラスの非静的メンバーへのポインターである静的 const メンバーを作成するのは簡単です。このような:
class A {
public:
int x;
private:
static int A::* const ptr_on_x;
};
int A::* const ptr_on_x = &A::x;
今、私はそのようなものを書くことができない理由を理解できません。つまり、同じクラスの非静的メンバーの参照である静的 const メンバーを作成します。
//won't compile
class B {
public:
int x;
private:
static int B::& const ptr_on_x;
};
int B::& const ptr_on_x = B::x;
ポインターと参照の違いに関するSOのさまざまな投稿から、手がかりが見つかりません。それどころか、「参照はエイリアスのようなものだ」と読んだことさえあります。それで、私は何を誤解していますか?
同じクラス内でいくつかの変数エイリアスを定義することは可能ですか? 単純なクラスではあまり役に立たないように思えることは認めます。言語自体についての質問です。
また、私は C++0x についてあまり知らないので、C++0x はこれに対する解決策を提供していますか?
編集 MarcinŁoś のコメントは、私に別のアイデアを与えてくれます。関数参照が取れるので、クラスメソッドの参照であるクラスメンバを作成できますか?