私のシナリオは次のとおりです::
class Parent
{
public:
int x;
}
class Child:public Parent
{
int x; // Same name as Parent's "x".
void Func()
{
this.x = Parent::x; // HOW should I access Parents "x".
}
}
ここでは、子のメンバー関数から親の「X」にアクセスする方法を説明します。
私のシナリオは次のとおりです::
class Parent
{
public:
int x;
}
class Child:public Parent
{
int x; // Same name as Parent's "x".
void Func()
{
this.x = Parent::x; // HOW should I access Parents "x".
}
}
ここでは、子のメンバー関数から親の「X」にアクセスする方法を説明します。
ほとんどそれを手に入れました:
this->x = Parent::x;
this
ポインタです。
スコープ解決演算子を介してアクセスすると機能します。
x = Parent::x;
ただし、どのような状況でこれを行いたいかについて質問します。あなたの例では、「is-a」関係をモデル化するパブリック継承を使用しています。したがって、この基準を満たすオブジェクトがあっても、値や意味が異なる同じメンバーがある場合、この「is-a」関係は誤解を招きます。これが適切な特殊な状況もあるかもしれませんが、それらは間違いなく規則の例外であると述べたいと思います。自分がこれをしていることに気付いたときはいつでも、その理由について長く真剣に考えてください。
これは、Luchian GrigoreとMr.Anubisによって提供されたソリューションの簡単な説明にすぎないため、「これがどのように機能するか」に興味がある場合は、さらに読む必要があります。
C ++は、いわゆる「スコープ演算子」(::
)を提供します。これは、タスクに完全に適しています。
詳細については、このページをご覧ください。この演算子をクラス名(Parent
)と組み合わせて、親のx
変数にアクセスできます。