12

私のシナリオは次のとおりです::

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」にアクセスする方法を説明します。

4

3 に答える 3

14

ほとんどそれを手に入れました:

this->x = Parent::x;

thisポインタです。

于 2012-07-17T15:06:22.280 に答える
4

スコープ解決演算子を介してアクセスすると機能します。

x = Parent::x;

ただし、どのような状況でこれを行いたいかについて質問します。あなたの例では、「is-a」関係をモデル化するパブリック継承を使用しています。したがって、この基準を満たすオブジェクトがあっても、値や意味が異なる同じメンバーがある場合、この「is-a」関係は誤解を招きます。これが適切な特殊な状況もあるかもしれませんが、それらは間違いなく規則の例外であると述べたいと思います。自分がこれをしていることに気付いたときはいつでも、その理由について長く真剣に考えてください。

于 2012-07-17T15:39:03.640 に答える
0

これは、Luchian GrigoreとMr.Anubisによって提供されたソリューションの簡単な説明にすぎないため、「これがどのように機能するか」に興味がある場合は、さらに読む必要があります。

C ++は、いわゆる「スコープ演算子」(::)を提供します。これは、タスクに完全に適しています。

詳細については、このページをご覧ください。この演算子をクラス名(Parent)と組み合わせて、親のx変数にアクセスできます。

于 2012-07-17T15:20:15.957 に答える